You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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处理的请求体,只需要调整两个关键地方,就能让代码更规范清晰,具体步骤如下:

  1. 更新请求头的Content-Type
    因为你现在发送的是JSON格式的数据,必须把Content-Type从表单格式的application/x-www-form-urlencoded改成application/json,这样后端才能正确识别并解析你的JSON请求体。

  2. 替换请求体为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

火山引擎 最新活动