Api curl请求到HTTParty请求

Api curl请求到HTTParty请求,api,curl,httparty,Api,Curl,Httparty,我很少使用API,有人能帮我翻译一下吗: $ curl -X POST -d "login_id=myemail@email.com&api_key=231421423423423423423" \ https://devapi.testapi.com/v2/authenticate/api 像这样的事情 include HTTParty base_uri 'https://devapi.testapi.com' def login response = self.class

我很少使用API,有人能帮我翻译一下吗:

$ curl -X POST -d "login_id=myemail@email.com&api_key=231421423423423423423" \
  https://devapi.testapi.com/v2/authenticate/api
像这样的事情

include HTTParty
base_uri 'https://devapi.testapi.com'

def login
  response = self.class.post( "/v2/authenticate/api",
               :headers => { "login_id" => 'myemail@email.com', "api_key" => '231421423423423423423' }
             ).parsed_response

  @token = response["auth_token"]
  return @token
end

我不确定将登录id和api密钥放在哪里,以便它们出现在请求地址的开头而不是结尾。

首先,我们需要澄清一些混淆。当您发送POST请求时,就像使用Curl时一样,它如下所示:

POST/v2/authenticate/api HTTP/1.1
用户代理:curl/7.30.0
主机:localhost:8000
接受:*/*
内容长度:56
内容类型:application/x-www-form-urlencoded
登录标识=myemail@email.com&api_key=231421423423423
第一行是请求方法(
POST
)和资源(
/v2/authenticate/api
)以及协议版本(
HTTP/1.1
)。接下来的五行是标题,标题总是有一个键(例如
内容长度
),后跟冒号和空格(
),后跟一个值(
56

您会注意到这些标题中没有您的数据,即
login\u id
api\u key
。数据不在标题中。它进入正文,在标题后面,中间有一条空行,告诉服务器,“标题已经完成;我发送的所有其他内容都是正文。”

希望这将有助于澄清我在这里看到的困惑:

我不确定应该将login_id和api_键放在哪里,以便它们出现在请求地址的开头而不是结尾

在POST请求中,数据不是地址的一部分,重申一下,也不是标题的一部分。是尸体

当使用HTTParty发出POST请求时,您可以使用
:body
选项指定一个字符串作为POST正文,但在Ruby代码中,您似乎更愿意使用哈希,这是正确的方法。对于散列,使用
:query
选项而不是
:body
,HTTParty将自动正确编码散列的内容。使用该选项,您的代码将如下所示:

query\u hash={:login\u id=>'myemail@email.com',
:api_key=>'231421423423423'}
response=self.class.post(“/v2/authenticate/api”,:query=>query\u hash)

Wooohooo,谢谢你的解释,这在将来肯定会很有用。顺便说一句,成功了!:)