diadia

興味があることをやってみる。自分のメモを残しておきます。

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

JSONcurlコマンドで送信する方法はどうすれば良いか?

curljsonを送信する際に考えなければならない要素は2つある。

  1. -d オプションで付すデータの形式を変更する
  2. 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