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

Not image

皆々様、こんにちは!

今回は、Rubyの標準ライブラリであるnet/httpを使ってgetリクエストを行う方法を紹介していこうと思います。

ちなみに、Rubyの標準ライブラリにはopen-uriというものもあります。普段みなさんはこちらを使う場合が多いのではないでしょうか?

なぜんら、open-uriでhttp通信を行った方がコード量は少なくてシンプルに書けるからではないでしょうか?

そんな状況の中、今回わざわざnet/httpを使ってhttp通信をしようと思ったのは、http通信についてなるべく深く理解しようと考えたからです。

今回は勉強も兼ねるので、それだけ丁寧にhttpのgetリクエストを扱っていきます。

したがって、Rubyでhttp通信をしたapi通信したり、何処かのサイトにアクセスしたいという方は参考になると思います。

また、今回はgetリクエストのみに焦点をおきます。

もしpostリクエストをしたい方やpostリクエストもついでに学んでおこうという方は、以下の記事を参考にしてみてください。

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

2018.11.15

それではnet/httpの軽い説明から。

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

net/httpとは?

本題に入る前に、軽くnet/httpについて説明します。

net/httpというのはRubyの標準ライブラリの一つです。

クライアントとサーバー間で情報をやり取りするプロトコルであるHTTPを扱うライブラリで、似ているライブラリでopen-uriというものが存在します。

open-uriとnet/httpの関係は、open-uriはnet/httpのラッパーという立ち位置になります。open-uriはnet/httpより高水準なため、コードもnet/httpよりシンプルに書くことができるという論理です。

さてnet/httpの説明はこれくらいにして、実際のgetリクエストのコードを見ていきましょう。

シンプルなgetリクエストのパターン

まず最初は、net/httpを使ってシンプルなgetリクエストをするパターンです。

先にNet::HTTPオブジェクトを生成するのが先か後かというだけです。

下の例のstartメソッドでは、Net::HTTPオブジェクトを生成すると同時にHTTPセッションを開始しています。

上記二つのプログラムでは、どちらも同じレスポンス(結果)が帰ってきます。

APIトークンを含むgetリクエストをするパターン

世の中には様々なサービスがAPIを公開しています。それらをnet/httpのgetリクエストを使って有効活用する方法です。

このコードがやっていることは、一見難しそうですがリクエストヘッダーにapiトークンをセットして、getリクエストしているだけです。

また、シンプルなgetリクエストの中では無かった、use_sslというものも付加されています。

ここではあまり詳しいことは書きませんが、データの送受信を暗号化して安全に通信を行うプロトコルです。このような設定もできます。

まとめ

今回は、getリクエストをRubyの標準ライブラリであるnet/httpを使って行ってみましたが、いかがだったでしょうか?

初心者の方には何をやっているのか難しく、上級者の方には当たり前すぎる記事になってしまったかなと思います。

初心者の方は、わからない処理に次ぐわからない処理で辛かったかもしれませんが、なんども自分の手を動かすことで次第に処理が分かるようになると思います。

中級者の方は、この記事をもっとも役に立てることができなのではないでしょうか?今までopen-uriでやっていた処理、何気なくhttp通信を行っている時の裏側を垣間見れたと思います。

上級者の方は、ド忘れしていたことを思い出していただくのに役に立てれば良いかと。

どのレベルの方にも有益なものというのは難しいですが、この記事でより多くの方がRubyのnet/httpの使い方・ひいてはhttp通信について理解が深まっていただければなと思っています。読んでいただき、ありがとうございました。

コメントを残す

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