curlコマンドについて
まず以下のコマンドを理解する
curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
これの意味を調べる。
参考:
https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
https://www.setouchino.cloud/blogs/99#post-x-post-d
-XオプションはHTTPメソッドを定めるものである。-Xの値はPOST や GETである。
-Hオプションはリクエストヘッダーに格納したい場合に使うものである。値がヘッダーに格納される。
-d (--data)オプションはデータを送る時に使うものでる。例えばwebサービスでnameというフォームが有り、"hajime"と入力し送信する場合には、curlでは以下のように送信されることになる。
curl -X POST -d 'name=hajime' example.com/send_info
データが複数ある場合には以下のように複数の方法で送信できる。
#①データとデータの間を&でつなぐ方法 curl -X POST -d 'name=hajime&age=23' example.com/send_info/ #②各データを-dオプションを使う方法 curl -X POST -d name=hajime -d age=23 example.com/send_info/
-dオプションの参考url: https://ec.haxx.se/http/http-post
JSONをcurlコマンドで送信する方法はどうすれば良いか?
curlでjsonを送信する際に考えなければならない要素は2つある。
- -d オプションで付すデータの形式を変更する
- json形式のデータであることを明示するためにheaderに情報を追加する
-d オプションのデータ形式
まずデータをシングルクオテーションでくくる。そして肝心のデータはJSON形式で記述する。 したがって以下のような形式で記述する。
curl -X POST -d 'JSON_data_forma' https://hogegoe.com/api/
具体的には、
curl -X POST -d '{"json1":"value1", "json2": "value2"}' https://hogegoe.com/api/
headerに情報追加
ヘッダーに情報を追加するには、-H オプションを使う。
JSONデータ形式を明示するには-Hオプションの値として'Content-Type:application/json'を使う。
curl -X POST -d '{"json1":"value1", "json2": "value2"}' https://hogegoe.com/api/ -H 'Content-Type:application/json
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Type