Api curl请求到HTTParty请求
我很少使用API,有人能帮我翻译一下吗: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
$ 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,谢谢你的解释,这在将来肯定会很有用。顺便说一句,成功了!:)