我正在使用RestClient来使用Spotify API(但我假设这是一个普遍的问题,而不是专门的Spotify)。
API需要传递client_id。我的代码: authorization = Base64.strict_encode64"#{@ clientID}:#{@ clientSecret}" 开始
request_body = { response_type: 'code', client_id: @clientID, redirect_uri: REDIRECT_URI }
#response = RestClient.get(AUTHORIZE_URI, request_body)
puts response = RestClient::Request.execute(method: :get, url: AUTHORIZE_URI, payload: request_body)
救援RestClient :: BadRequest => Ë 把e.response 端
但是我收到BadRequest异常,并且响应声明"缺少必需参数:client_id"。
如果我做卷曲:
puts `curl -I -s -X GET "#{AUTHORIZE_URI}?client_id=#{@clientID}&response_type=code&redirect_uri=REDIRECT_URI"`
我得到正常的200 OK回复。这是怎么回事????
答案 0 :(得分:0)
您必须使用params
哈希中的headers
密钥来传递查询参数。以下文档
由于原始API中的不幸选择,params过去常常使用 填充查询字符串实际上是从标题哈希中取出的。 所以如果你想传递params哈希和更复杂的选项, 使用特殊键:标题哈希中的params。这个设计可能 改变未来的主要版本。
RestClient::Request.execute(method: :get,
url: 'http://example.com/resource',
timeout: 10,
headers: {params: {foo: 'bar'}}
)
➔ GET http://example.com/resource?foo=bar