使用WheniWork的api,我需要使用令牌进行身份验证,我还需要发送数据来创建新用户。我通过requests.post()发送的参数的顺序或名称是否重要?
如果我只是使用GET来提取信息,我可以让网址包含我正在查找的内容,然后发送作为令牌的有效负载。例如:
url = 'https://api.wheniwork.com/2/users/2450964'
payload = {"W-Token": "ilovemyboss"}
r = requests.get(url, params=payload)
print r.text
但是,当我尝试添加新用户时,我无法验证或无法正确传递数据。 api参考显示了使用cURL的这种格式:
curl https://api.wheniwork.com/2/users --data '{"first_name":"FirstName", "last_name": "LastName", "email": "user@email.com"}' -H "W-Token: ilovemyboss"
这是我在python(2.7.10)中使用请求编写的内容:
url = 'https://api.wheniwork.com/2/users'
data={'first_name':'TestFirst', 'last_name': 'TestLast','email':'test@aol.com'}
params={"W-Token": "ilovemyboss"}
r = requests.post(url, data=data, params=params)
print r.text
有人可以解释数据(用户)是否/如何与身份验证(令牌)分开发送?
答案 0 :(得分:0)
我发现了这个问题! 数据(用户字典)需要在引号中。我不确定他们的API是否期望一个字符串,或者这是请求如何工作,或者是什么。但这是解决方案:
url = 'https://api.wheniwork.com/2/users'
data = "{'first_name':'TestFirst', 'last_name': 'TestLast','email':'test@aol.com'}"
params = {"W-Token": "ilovemyboss"}
r = requests.post(url, data=data, params=params)
print r.text
答案 1 :(得分:0)
我们可以通过使用json.dumps
将数据字典转换为JSON字符串来解决上述问题。
data={'first_name':'TestFirst', 'last_name': 'TestLast','email':'test@aol.com'}
r = requests.post(url, data=json.dumps(data), params=params)
print r.text