【Rubyでhttp通信】net/httpを使ってpostリクエストする方法

Not image

Rubyでpostリクエストって、APIを使う時などに使うと聞いたことあるけど実際どうやるの?」という方。

今回はそんな方に向けて、Rubyの標準ライブラリのnet/httpを使ってhttp通信の一端に触れていこうと思います。

そんなhttp通信の中でも、postリクエストに焦点を置いて説明していきますので、どうぞよろしく!

また、今回はnet/httpというライブラリを選択しましたが、Rubyの標準ライブラリにはopen-uriというシンプルなコードでhttp通信を行うことができるものもありますので、興味がある方は「ruby open-uri」とかでググってみてください。

そこで、なぜ手間のかかるnet/httpを紹介するかと言いますと、少しでも基礎を抑えたいという考えからです。

まあ実際のところ深掘りしていけばキリがないので、「少しでも深いところ」というユルい感じです。

加えてgetリクエストをやりたい方は、下にまとめましたのでよかったら見てみてください。

【Rubyでhttp通信】net/httpを使ってgetリクエストする方法

2018.11.14

それでは、実際にpostリクエストを投げるコードも載せながらまとめていきたいと思います。

Ruby標準ライブラリnet/httpでpostリクエストする手順

http通信のpostリクエストとは?

http通信にはgetリクエストやpostリクエストなどがあります。

今回postリクエストをやってみようということなので、そもそもpostリクエストとは何なのかを軽くさらっておきます。

  1. getリクエストでは送信量制限になってしまう量のデータを通信
  2. データの中身を見られたくないものを通信
  3. サーバーにデータを登録する際に使われる通信

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通信に関する知識が少しでも深まってくれたのなら、この記事の存在意義があるというものなのです。

ここまで読んでいただき、ありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です