長野エンジニアライフ

東京から長野に移住したエンジニアのブログです。🦒🗻⛰

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