前端接口时添加transformRequest,transformResponse配置时,后端直接返回400错误
来源:9-6 请求和响应配置化- transform 逻辑重构 + demo 编写

若强
2019-05-23
报错截图
报错信息码
SyntaxError: Unexpected token a in JSON at position 0
at JSON.parse (<anonymous>)
at createStrictSyntaxError (E:Alldemo s-axios
ode_modulesody-parserlib ypesjson.js:158:10)
at parse (E:Alldemo s-axios
ode_modulesody-parserlib ypesjson.js:83:15)
at E:Alldemo s-axios
ode_modulesody-parserlib
ead.js:121:18
at invokeCallback (E:Alldemo s-axios
ode_modules
aw-bodyindex.js:224:16)
at done (E:Alldemo s-axios
ode_modules
aw-bodyindex.js:213:7)
at IncomingMessage.onEnd (E:Alldemo s-axios
ode_modules
aw-bodyindex.js:273:7)
at IncomingMessage.emit (events.js:201:15)
at endReadableNT (_stream_readable.js:1130:12)
at processTicksAndRejections (internal/process/task_queues.js:84:17)
前台浏览器报错信息截图
server.js
直接复制老师的
function registerConfigRouter () {
router.post('/config/post', function(req, res) {
console.log(req.body)
res.json(req.body)
})
}
config/app.ts
import axios, { AxiosTransformer } from '../../src/index'
import qs from 'qs'
axios({
transformRequest: [(function(data) {
return qs.stringify(data)
}), ...(axios.defaults.transformRequest as AxiosTransformer[])],
transformResponse: [...(axios.defaults.transformResponse as AxiosTransformer[]), function(data) {
if (typeof data === 'object') {
data.b = 2
}
return data
}],
url: '/config/post',
method: 'post',
data: {
a: 1
}
}).then((res) => {
console.log(res.data)
})
同时下面单独这样是不报错的
import axios, { AxiosTransformer } from '../../src/index'
import qs from 'qs'
axios.defaults.headers.common['test2'] = 123
axios({
url: '/config/post',
method: 'post',
data: qs.stringify({
a: 1
}),
// data:{a:1},
headers: {
test: '321'
}
}).then((res) => {
console.log(res)
})
写回答
1回答
-
ustbhuangyi
2019-05-23
贴一下报错的时候,你的请求 body 数据的格式是怎么样的。
062020-05-18
相似问题