curlコマンドのメモ
firebaseのcloud functionsを実行する際に、知ったcurlコマンドについてのメモです。 この辺のリファレンス読みつつ問題なく実行はできましたが、curlについてはワカランでした。 firebase.google.com
って事で、curlについての基礎的なメモ記事スタートです◎
curlとは
サーバから、もしくはサーバへデータ転送を行うコマンド。 (自分の認識だとAPIを叩くコマンドっていうざっくりした認識でした。)
GETしてみる
早速サーバへデータ転送(リクエスト送信)してみます。
以下のコマンドによって、google先生へのリクエスト送信ができます。オプションの-I
をつけるとステータスとヘッダ情報を持ったレスポンスデータが取得できます。
curl -I https://www.google.com
実行結果
HTTP/2 200 date: Tue, 12 Nov 2019 15:06:21 GMT expires: -1 cache-control: private, max-age=0 content-type: text/html; charset=ISO-8859-1 p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info." server: gws x-xss-protection: 0 x-frame-options: SAMEORIGIN set-cookie: 1P_JAR=2019-11-12-15; expires=Thu, 12-Dec-2019 15:06:21 GMT; path=/; domain=.google.com set-cookie: NID=191=pd9y9kg1nztHqe1TxdBAk6cU78umd7qj2c3j_ddWKz9OiZWdGC-_IXOheLMit6TDBsk8hCtSJW_KLfjHs6H9Eue7JV4e8qUu6brGXhbAoHg0mXDjDpHPdxD57nPJN-jLD8t6DNL2pisQ9ReTfYUdFEZzPyTb5VNcP4gwtgD4IQk; expires=Wed, 13-May-2020 15:06:21 GMT; path=/; domain=.google.com; HttpOnly alt-svc: quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000 accept-ranges: none vary: Accept-Encoding
POSTしてみる
業務ではPOSTでデータを送った時のレスポンスを知りたい事があります。POSTしたい場合は-X POST
のオプションをつけ、送りたいデータの前に-d [送りたいデータ]
とします。
curl -X POST https://noumenon-th.net/programming/sample/php/test-post.php -d 'word1=hello&word2=world'
実行結果
helloとworldを入力しました。
JSON形式でデータのやりとりをする場合は-H ‘Content-Type:application/json’
と指定し-d
の後にJSON形式でデータを記述してあげます、
curl -H 'Content-Type:application/json' -X POST https://noumenon-th.net/javascript-stuty/json.php -d '{"word1":"hello","word2":"world"}'
実行結果
world
https://noumenon-th.net/javascript-stuty/json.php ではworld2で受け取ったデータをレスポンスデータとして返ってくるAPIになっています。
ほかにも色々なオプションがあったり、転送先のサーバの仕様でposuするデータの形式の記述に指定があることがあります。
firebaseのonCallの仕様だと、リクエストする際のデータは"data{ [JSON形式のデータ]}"
のように"data:{}"
で括ってあげる仕様となっています。(ちなみに今日はこれで少しつまづいていた)
firebase.google.com
以下のようにdata{}で括ってあげるのがhttps.onCall プロトコルの仕様
curl -X POST -H "Content-Type:application/json" [対象functionsのURL] -d '{"data": {"hoge":"tempData"}}'
参考記事
こちらとても勉強になった記事です!今回、参考にさせて頂きました! noumenon-th.net qiita.com