「Rubyでpostリクエストって、APIを使う時などに使うと聞いたことあるけど実際どうやるの?」という方。
今回はそんな方に向けて、Rubyの標準ライブラリのnet/httpを使ってhttp通信の一端に触れていこうと思います。
そんなhttp通信の中でも、postリクエストに焦点を置いて説明していきますので、どうぞよろしく!
また、今回はnet/httpというライブラリを選択しましたが、Rubyの標準ライブラリにはopen-uriというシンプルなコードでhttp通信を行うことができるものもありますので、興味がある方は「ruby open-uri」とかでググってみてください。
そこで、なぜ手間のかかるnet/httpを紹介するかと言いますと、少しでも基礎を抑えたいという考えからです。
まあ実際のところ深掘りしていけばキリがないので、「少しでも深いところ」というユルい感じです。
加えてgetリクエストをやりたい方は、下にまとめましたのでよかったら見てみてください。
それでは、実際にpostリクエストを投げるコードも載せながらまとめていきたいと思います。
目次
Ruby標準ライブラリnet/httpでpostリクエストする手順
http通信のpostリクエストとは?
http通信にはgetリクエストやpostリクエストなどがあります。
今回postリクエストをやってみようということなので、そもそもpostリクエストとは何なのかを軽くさらっておきます。
- getリクエストでは送信量制限になってしまう量のデータを通信
- データの中身を見られたくないものを通信
- サーバーにデータを登録する際に使われる通信
postリクエストは、このような特徴を持っています。
特徴3は、Web界隈の慣習の問題なのかもしれません。
データを取得する時はgetリクエストで、データを登録(送信)する時はpostリクエストというのが暗黙の了解になっています。
シンプルなpostリクエスト
set_form_dataを使って、送信するデータを格納することができます。
リクエストのbody部分に送信するデータを格納することで、getリクエストのように送信データがurlから直接見えることが無くなります。
またuse_ssl設定をすることで、安全な通信をすることができるようになっています。
APIトークンを設定したpostリクエスト
こちらでは、世の中の様々なAPIを使うことが前提なので、先ほどのシンプルにpostリクエストするパターンに、APIトークンを設定して認証を通過しpostリクエストを行なっています。
APIトークンを設定している所はリクエストヘッダーです。
送信するデータはset_form_dataでもセットすることができますが、json形式でもセットすることができます。jsonもRubyの標準ライブラリですので、requireすればすぐに使うことができます。
まとめ
ここまで、Ruby標準ライブラリのnet/httpを使ってpostリクエストを投げる方法をまとめてきました。
http通信について理解することで、世の中に公開されている有益なAPIを使ったり、「通信」についての理解が深まると思います。
この記事では、これもRubyの標準ライブラリの「open-uri」などnet/httpより便利なライブラリを使わずに、少し深いところを意識して話を展開してきました。
その結果みなさんのhttp通信に関する知識が少しでも深まってくれたのなら、この記事の存在意義があるというものなのです。
ここまで読んでいただき、ありがとうございました!
コメントを残す