REST API post请求会导致成功的请求,但不会导致创建

2024-09-28 01:26:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试向我的CRM API发出Post请求。CRM API非常模糊:

“您可以在希望创建记录时使用POST请求。您将JSON编码的字符串发布到服务器,它将返回记录的单个实例。”

POST /{object_name}

例如: 请求URL(POST):

/accounts

请求正文(JSON):

{
    "name": "testing API"
}

我经常成功地提出GET请求,但这篇文章并不那么容易

url = "https://apiv4.reallysimplesystems.com/accounts?<KEY>"

payload = {"name":"Ziggy","owner":"XYZ","addresscounty/state":"Awe","source":"Space"}
headers = {
  'Content-Type': 'application/json',
  'Cookie': 'XSRF-TOKEN=<TOK>; really_simple_systems_session=<KEY>'
}

response = requests.post(url, headers=headers, data=payload)

当我运行这个程序时,我会得到一个状态码200,但我真的在寻找那个201。在这一点上,我必须遵循的唯一线索是,当我跑步时:

response.json()

我得到一个错误:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我尝试将响应参数切换为json:

response = requests.post(url, headers=headers, json=payload)

我已经尝试使用json.dumps()确保我的负载是json:

payload = {"name":"Ziggy","owner":"XYZ","addresscounty/state":"Awe","source":"Space"}
payload = json.dumps(payload)

我还尝试过各种各样的恶作剧,我现在都想不起来了。有人知道我哪里出了问题吗?200号状态码让我感到痛苦的接近


Tags: keynameapijsonurlresponse记录post
2条回答

用您的身份验证令牌替换<AUTH_TOKEN>

url = "https://apiv4.reallysimplesystems.com/accounts/"

payload = {"name":"Ziggy"}
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer <AUTH_TOKEN>',
}

response = requests.post(url, headers=headers, data=payload)

解决的问题:

import json
import requests

url = "https://apiv4.reallysimplesystems.com/accounts"

payload = {"name":"RSS Test Joe Bloggs","addresscounty/state":"Maryland","source":"Word of Mouth"}
payload = json.dumps(payload)
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer <AUTH KEY>'
}

response = requests.post(url, headers=headers, data=payload)

而不是使用包含在URL中的邮递员代码,并使用:

'Cookie': 'XSRF-TOKEN=<TOK>; really_simple_systems_session=<KEY>'

我将其替换为标准授权标头。其次,我发现使用json.dumps(payload)json = payload会导致错误的请求

相关问题 更多 >

    热门问题