{category}

Ruby - ネットワークプログラミング

Net::HTTP

ネット エイチティーティーピー(標準ライブラリ

意味 HTTPクライアントの機能を提供


Net::HTTPとは?

Net::HTTPは、Rubyの標準ライブラリに含まれるクラスで、HTTPプロトコルを使用したネットワーク通信を簡単に行うための機能を提供します。Webサーバーとの通信やAPIリクエストの送信などに使用されます。

Net::HTTPの具体的な使い方

GETリクエストの送信と応答の処理

require 'net/http'
require 'uri'
require 'json'

# リクエスト先のURLを設定
uri = URI('https://api.github.com/users/octocat')

# Net::HTTPを使用してGETリクエストを送信
response = Net::HTTP.get_response(uri)

# レスポンスの処理
case response
when Net::HTTPSuccess
  # JSONレスポンスをパース
  user_data = JSON.parse(response.body)
  
  puts "GitHub ユーザー情報:"
  puts "名前: #{user_data['name']}"
  puts "場所: #{user_data['location']}"
  puts "フォロワー数: #{user_data['followers']}"
  puts "公開リポジトリ数: #{user_data['public_repos']}"
else
  puts "エラー: #{response.code} #{response.message}"
end

👇出力結果

GitHub ユーザー情報:
名前: The Octocat
場所: San Francisco
フォロワー数: 8135
公開リポジトリ数: 8

この例では、Net::HTTPを使用してGitHub APIにGETリクエストを送信し、特定のユーザー(この場合は'octocat')の情報を取得しています。レスポンスのステータスコードを確認し、成功した場合はJSONレスポンスをパースしてユーザー情報を表示します。エラーが発生した場合は、エラーメッセージを表示します。

POSTリクエストの送信と認証の使用

require 'net/http'
require 'uri'
require 'json'

# リクエスト先のURLを設定
uri = URI('https://api.github.com/gists')

# リクエストボディを作成
data = {
  description: 'Example of creating a gist',
  public: true,
  files: {
    'example.rb' => {
      content: 'puts "Hello, World!"'
    }
  }
}

# Net::HTTPを使用してPOSTリクエストを作成
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path)
request['Authorization'] = 'Bearer YOUR_GITHUB_TOKEN'
request['Content-Type'] = 'application/json'
request.body = data.to_json

# リクエストを送信
response = http.request(request)

# レスポンスの処理
case response
when Net::HTTPSuccess
  result = JSON.parse(response.body)
  puts "Gistが作成されました。URL: #{result['html_url']}"
else
  puts "エラー: #{response.code} #{response.message}"
  puts response.body
end

この例では、Net::HTTPを使用してGitHub APIにPOSTリクエストを送信し、新しいGistを作成しています。認証トークンを使用してリクエストを認証し、JSONデータをリクエストボディとして送信します。レスポンスを処理して、成功した場合は作成されたGistのURLを表示し、エラーが発生した場合はエラーメッセージを表示します。注意: 実際に使用する際は、'YOUR_GITHUB_TOKEN'を有効なGitHubトークンに置き換える必要があります。

Net::HTTPに関するよくある質問

Q. Net::HTTPとは何ですか?
A. Net::HTTPは、RubyでHTTP通信を行うための標準ライブラリクラスです。Webサーバーとの通信やAPIリクエストの送信などに使用されます。
Q. GETリクエストの送信方法は?
A. Net::HTTP.get_response(uri)メソッドを使用します。uriはURI.parseで作成したURIオブジェクトです。
Q. POSTリクエストの送信方法は?
A. Net::HTTP.post(uri, data, headers)メソッドを使用します。uriはURIオブジェクト、dataは送信するデータ、headersはリクエストヘッダーを指定します。
Q. HTTPSを使用する方法は?
A. URIのスキームをhttpsにすると、自動的にHTTPS接続が使用されます。追加の設定は必要ありません。
Q. レスポンスのステータスコードの取得方法は?
A. レスポンスオブジェクトの.codeメソッドを使用します。例:response.code

Net::HTTPが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、RubyのNet::HTTPやFileUtils、Complex、Rational、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

FileUtils

ファイル操作のユーティリティ

種類: ファイルシステム操作

Complex

複素数を扱うためのクラス

種類: 数学ライブラリ

Rational

有理数を扱うためのクラス

種類: 数学ライブラリ

reverse

配列の要素を逆順にする

種類: 配列操作

[]

配列要素へのアクセス

種類: 配列操作