使用Graphileon代理功能返回400错误,求助排查代码问题
问题原因
- 你传递给
/proxy接口的请求参数提前做了JSON.stringify序列化,但AJAX请求未配置contentType: 'application/json',服务端会将传入的字符串识别为普通表单数据,无法解析为代理接口要求的参数格式。 - 代理接口要求如果传递的目标请求
body是纯对象格式,必须额外在代理参数中添加json: true的标识,和报错提示的规则完全对应。
修复方案
修改后的代码如下:
var schemaUrl = "http://localhost:8080/score/api"; // 直接构造纯对象作为代理请求参数 var proxyParams = { url: schemaUrl, method: 'POST', // 添加json: true标识,告诉代理接口目标请求body是JSON对象 json: true, body: { state : "*", bucket: [ {name: "Ram", tr1: "TR1", TC1: 1} ] } }; $.ajax({ url: "/proxy", method: "POST", data: JSON.stringify(proxyParams), // 声明请求体格式为JSON contentType: 'application/json', // 预期响应格式为JSON,可根据实际返回调整 dataType: 'json' })
补充说明
如果不想加json: true参数,也可以直接把目标请求的body字段提前做JSON.stringify转成字符串,两种方式二选一即可,都符合报错提示的参数要求。
内容的提问来源于stack exchange,提问作者Paras Bansal
相关产品推荐
相关产品推荐

