POST请求数据格式优化:如何用JSON格式body替代表单格式?
问题:POST请求中如何从表单格式切换为JSON.stringify处理的请求体?
我在处理POST请求数据时遇到了一个问题:当前使用表单格式的bodydata1可以成功发起请求,但我希望改用经JSON.stringify处理后的bodydata,让代码更规范易读。请问该如何实现?
我的代码如下:
let bodydata = JSON.stringify({ fonk: 'usrlogin', login_userid: '111111', passsha:'d4c59285sds62233bc232e0f205esd8b7e' }); let bodydata1 = "fonk=usrlogin&login_userid=111111&passsha=d4c59285sds62233bc232e0f205esd8b7e" const data = yield call(request, 'http://11.11.11.11/JSONRESTfulServices-1/rest/products/solrpost', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: bodydata1 }); yield put(dropExternal(data))
解决方案
要切换到JSON.stringify处理的请求体,只需要调整两个关键地方,就能让代码更规范清晰,具体步骤如下:
更新请求头的Content-Type
因为你现在发送的是JSON格式的数据,必须把Content-Type从表单格式的application/x-www-form-urlencoded改成application/json,这样后端才能正确识别并解析你的JSON请求体。替换请求体为bodydata
直接把body的值从bodydata1换成你已经用JSON.stringify处理好的bodydata即可,还可以顺手删掉不再需要的bodydata1变量,精简代码。
修改后的完整代码:
let bodydata = JSON.stringify({ fonk: 'usrlogin', login_userid: '111111', passsha:'d4c59285sds62233bc232e0f205esd8b7e' }); const data = yield call(request, 'http://11.11.11.11/JSONRESTfulServices-1/rest/products/solrpost', { method: 'POST', headers: { 'Content-Type': 'application/json', // 切换为JSON格式的Content-Type }, body: bodydata // 使用JSON序列化后的请求体 }); yield put(dropExternal(data))
额外提一句:要确保你的后端服务已经支持接收application/json格式的POST请求,不过从你的接口路径里的JSONRESTfulServices来看,应该是天然支持JSON请求的,大概率不会有问题~
内容的提问来源于stack exchange,提问作者kurtulusoztekin




