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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、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では、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう 厳しい試験を通過した講師 があなたの相談に真摯に向き合います。

「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」

こんな気持ちでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する