RubyでHTTPClientを使う方法【初心者向け】

初心者向けにRubyでHTTPClientを使う方法について解説しています。HTTPClientはネットワーク通信を行う際に使用します。導入と基本の手順をサンプルコードを動かしながら学習しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

RubyでHTTPClientを使う方法について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

HTTPClientを使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

HTTPClient(クライアント)とは

`HTTPClient` と呼ばれるものは、Rubyにおいては https://github.com/nahi/httpclient を指すことが多くあります。

`http client` とただ書かれたときには、いわゆるネットワーク通信を取り扱うライブラリであることが多いです。

この `HTTPClient` も例に漏れず、ネットワーク通信を取り扱うライブラリで、Rubyが標準で取り込んでいる同様のライブラリ`net/http` よりも取り扱いやすいようなライブラリとなっています。

 

HTTPClient(クライアント)の使い方

さて、この `HTTPClient` は標準ライブラリではないので、gem を使ってインストールする必要があります。

bash

$ gem install httpclient

このコマンドを実行する、あるいは `Gemfile` に

gem 'httpclient'

と記述したのち、 `bundle install` することで利用することが出来るようになります。

そして、Rubyのコード中で `require ‘httpclient’` を実行するか、 bundler を利用してすべての依存Gemを読み込むことで実際に利用することができます。

実際のコード中では、 `HTTPClient.new` したインスタンスを使って、リクエストを行っていくことになります。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に使ってみよう

さて、ここからが本番です。基本となる GET, POST を中心にサンプルコードを記載しますので、実際に手元に書いて動かしてみましょう。

適当なAPIサーバーをたてても良いのですが、手間もかかるので一旦ダミーのTODOListのようなAPIを想定します。

| http method | url | decription |
| GET | https://example.com/todos | todo一覧を取得するAPI |
| GET | https://example.com/todos/:id | todo の id=:id を取得するAPI |
| POST | https://example.com/todos | todo を追加するAPI。 body は json で{“text”: “freetext”} といった形 |

 

rb

require 'httpclient'

base_url = 'https://example.com/todos'

client = HTTPClient.new()

response = client.get(base_url)
puts response.status #=> 200
puts response.body #=> {}

client.post(base_url, {text: 'todo'}, 'Content-Type' => 'application/json')

response = client.get(base_url)
puts response.status #=> 200
puts response.body #=> {"todos": [{"id": 1, "text": "todo"}]}

response = client.get(base_url + '/1')
puts response.status #=> 200
puts response.body #=> {"id": 1, "text": "todo"}

このように、簡単なリクエストなら少ない行数でさっと書けるのが `HTTPCLient` の特徴です。

都度 `response.status` をチェックしていますが、ここが 200 以外のときはエラーだったり特別な処理が必要になったりすることもあるので、都度チェックするコードを記述すると良いですね。

また、今回は記述しませんでしたが認証情報をセットして、TwitterのようなOAuth認証を行いながらリクエストしたりする事もできます。

HTTPClient は公式の rubydoc のサンプルコードが充実しているため、是非そちらを読みながらたくさんコードを書きましょう。

 

監修してくれたメンター

大塚 颯斗

Ruby on Rails, PHP, Go を中心としたウェブアプリケーションエンジニアとして都内のウェブサービスを提供する企業に在籍。
最近はPHPを主に書きながら、オブジェクト指向をうまく適用していくことに関心を寄せています。

家で飼っている猫が好きだが、何故かすぐに猫に攻撃されて嫌われているかもしれない、というのが悩み。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。