调用Plaid API请求失败,合法JSON请求体无法被识别如何排查?
Plaid curl请求体报错排查结论
原请求的JSON字段结构完全符合Plaid接口的要求,本身是合法JSON,报错是curl参数解析环节出了问题,最常见的诱因是终端环境的引号规则不兼容。
具体问题&修复方案
- 如果你是在Windows CMD、PowerShell环境运行命令:
这类Windows原生终端不识别单引号作为字符串边界,会把单引号当成请求体的一部分传给服务端,导致JSON格式被破坏。需要把JSON外层的单引号替换为双引号,同时对JSON内部的所有双引号加反斜杠转义,修改后的命令如下:curl -X POST https://sandbox.plaid.com/link/token/create -H "Content-Type:application/json; charset=utf-8" -d "{\"client_id\":\"CLIENT_ID\",\"secret\":\"SECRET\",\"user\":{\"client_user_id\":\"unique-per-user\"},\"client_name\":\"Plaid App\",\"products\":[\"auth\"],\"country_codes\":[\"US\"],\"language\":\"en\"}" - 如果你是在macOS终端、Linux Shell、WSL等类Unix环境运行命令:
原命令本身格式是合法的,如果依然报错可以先加-v参数查看curl实际发出的请求内容,确认终端没有自动给引号加额外转义:
若依然存在转义异常,最稳妥的方案是把JSON内容单独写入curl -v -X POST https://sandbox.plaid.com/link/token/create -H "Content-Type:application/json; charset=utf-8" -d '{"client_id":"CLIENT_ID","secret":"SECRET","user":{"client_user_id":"unique-per-user"},"client_name":"Plaid App","products":["auth"],"country_codes":["US"],"language":"en"}'request.json文件,通过文件引用的方式传入请求体,完全规避引号冲突:curl -X POST https://sandbox.plaid.com/link/token/create -H "Content-Type:application/json; charset=utf-8" -d @request.json
内容的提问来源于stack exchange,提问作者SafeDev
相关产品推荐
相关产品推荐

