API调用正常但代码触发400无效输入错误的解决方案咨询
解决API调用400无效字段类型错误的方案
问题场景
直接使用指定Payload调用API时可正常运行,但在自有代码库中执行时触发400错误,错误详情如下:
{"statusCode": 400,"error": {"errors": [{"id": "400db520-d02b-4d74-8f74-198def822116","status": 400,"code": "invalid","title": "Invalid input.","detail": "An invalid field type was passed in.","source": {"pointer": "/data"},"meta": {}}]}}
错误指向/data字段存在无效类型。
有效Payload示例
{"data": {"type": "profile-subscription-bulk-create-job","attributes": {"custom_source": "Marketing Event","profiles": {"data": [{"type": "profile","attributes": {"email": "abc@gmail.com","phone_number": "+0000000000","subscriptions": {"email": {"marketing": {"consent": "SUBSCRIBED"}},"sms": {"marketing": {"consent": "SUBSCRIBED"}}}}}]}},"relationships": {"list": {"data": {"type": "list","id": "XXXXX"}}}}}
排查及解决步骤
- 检查Payload序列化逻辑:确认代码中没有将整个
data结构序列化为字符串(比如误将JSON对象转成字符串后再嵌套),导致API接收到的/data是字符串类型而非JSON对象。 - 核对字段类型一致性:逐字段对比代码构造的Payload与有效示例的类型,比如
custom_source必须是字符串、profiles.data必须是数组、consent必须是严格的"SUBSCRIBED"字符串(注意大小写)。 - 验证嵌套结构完整性:确保
relationships.list.data下的type和id均为字符串类型,subscriptions的嵌套层级与示例完全一致,没有缺失或多余的层级。 - 检查请求头与编码:确认请求头包含
Content-Type: application/json,且未对Payload做额外URL编码,避免API无法正确解析JSON结构。 - 输出实际发送的Payload:在代码中添加日志,打印最终发送给API的完整Payload内容,与有效示例逐字符对比,定位细微差异(如多余引号、转义符错误)。
内容的提问来源于stack exchange,提问作者NAGARAJ .R 35
相关产品推荐
相关产品推荐

