RubyでAPI呼びGET/POST
Ruby実践でネットワーク通信を始める
Rubyで外部APIと連携する際、最も基本的な手段は標準ライブラリの net/http を使うことです。まずは require 'net/http' をファイルの先頭に書き、URI.parse でURLをパースします。以下はGETリクエストのサンプルです。
<?ruby
require 'net/http'
require 'uri'
uri = URI.parse('https://api.example.com/v1/items')
response = Net::HTTP.get_response(uri)
if response.is_a?(Net::HTTPSuccess)
puts "取得成功: #{response.body}"
else
puts "エラー: #{response.code}"
end
?>
このコードは、HTTPリクエストを送信し、レスポンスが成功かどうかを判定します。URI.parse はURL文字列を URI::HTTPS オブジェクトに変換し、Net::HTTP.get_response が内部でGETメソッドを実行します。
POSTリクエストでデータを送信する
POSTリクエストはデータを送信する際に使われます。Net::HTTP::Post クラスを利用し、ヘッダーやボディを設定します。以下はJSONデータを送る例です。
<?ruby
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse('https://api.example.com/v1/items')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request['Content-Type'] = 'application/json'
request.body = { name: 'Sample', price: 1000 }.to_json
response = http.request(request)
puts "ステータス: #{response.code}"
puts "レスポンス: #{response.body}"
?>
ここでは Content-Type を application/json に設定し、Rubyのハッシュを to_json で文字列化しています。API呼び出しの際は、必ずヘッダーを正しく設定し、必要に応じて認証トークンを付与してください。
外部連携のベストプラクティス
外部APIと連携する際は、以下のポイントを押さえておくと安全かつ安定した実装が可能です。
- タイムアウト設定:
Net::HTTPではread_timeoutやopen_timeoutを設定できます。 - リトライロジック: ネットワーク障害時に自動で再試行する仕組みを組み込みましょう。
- エラーハンドリング:
Net::HTTPErrorを捕捉し、ステータスコードに応じた処理を行います。 - ログ出力: リクエストとレスポンスをログに残すことで、トラブルシューティングが容易になります。
- セキュリティ: HTTPS を必ず使用し、認証情報は環境変数やシークレットマネージャに保管します。
これらを実装することで、Ruby実践でネットワーク通信を行う際に、外部連携の信頼性と保守性を高めることができます。
コメント
コメントを投稿