request.patch 在 Salesforce API 中出现重复值错误

2 投票
1 回答
688 浏览
提问于 2025-04-27 21:41

我参考了这个指南,想要向Salesforce的API发送一个patch请求。

我的Python代码是:

headers = {"Authorization" : "OAuth %s"%str(accessToken), "Content-Type" : "application/json"}
try:
    response = requests.patch(url, data, headers=headers)
    self.log.info('request.patch response : %s %s'\
                 % (response.text, response.status_code))
except Exception, e:
    self.log.info("Exception %s"%str(e))

我正在更新Salesforce中已经存在的一条记录。但是我遇到了下面的错误:

response.text = [
  {
   "message":"duplicate value found: mypackageprefix__external_field__c duplicates value on record with id: a1T50000005G9jxyz",
   "errorCode":"DUPLICATE_VALUE",
   "fields":[]
  }
]
response.status_code = 400

这个错误是什么情况下出现的呢?

而且,因为我只是更新现有的记录,理论上我应该只会收到status_code=204(就像指南里说的那样),但有时候我却收到了status_code=201。这是为什么呢?

请帮帮我。

暂无标签

1 个回答

0

400:这表示请求有问题。你提供的文档上写着:

注意,如果你的关系类型是主从关系,并且设置为不允许重新归属(也就是不允许改变父子关系),当你尝试更新父级的外部ID时,会出现HTTP状态码400的错误,错误代码为INVALID_FIELD_FOR_INSERT_UPDATE。

201:这表示创建成功。文档上说:

如果成功创建了一个新记录,会返回HTTP状态码201。

204:这表示响应没有内容。文档上说:

如果更新了一个已有的记录,会返回HTTP状态码204。

简单来说:400(有问题) 201(之前不存在,现在创建了) 204(之前存在,现在更新了)

撰写回答