2018年1月26日金曜日

ruby の RestClient でクエリストリング中に配列を含める方法

概要

前回 curl を使ってクエリストリング中に配列を入れてサーバに送信しました
今回は ruby の RestClient を使って配列を送信してみました

環境

  • maxOS 10.13.2
  • Ruby 2.4.1p111
  • RestClient 1.8.0

curl

以下の curl でのリクエストを RestClient からもやってみたいと思います

リクエスト

  • curl 'localhost:4567/?Hoge[]=hoge1&Hoge[]=hoge2' --globoff

レスポンス

hoge1 hoge2

RestClient

RestClient でやる場合はこんな感じです

  • vim app.rb
require 'rest-client'

query = '/?Hoge[]=hoge1&Hoge[]=hoge2'
ret = RestClient.get "localhost:4567#{query}"

puts ret

これで curl と同じ結果を取得することができます
文字列でクエリストリングを作成して、それをそのまま URI 中に含めているだけです
文字列として扱うので若干面倒なケースもありますがシンプルな方法かなとは思います

params: を使って送信することもできるのですがハッシュで宣言する必要がありキーが重複してしまうため 1 つしか値を送信することができません

p = {
  :params => {
    'Hoge[]' => 'hoge1',
    'Hoge[]' => 'hoge2',
  }
}
ret = RestClient.get 'localhost:4567', p

これだと hoge2 だけしか送信してくれません

最後に

RestClient で配列を送信する方法を紹介しました
POST や PUT であればリクエストボディを設定できるのでそっちで配列なりを送信してあげれば OK です

今回は GET + クエリストリングの場合に配列を送信する方法を紹介しました

0 件のコメント:

コメントを投稿