我正在使用Node 16.15.x应用程序中最新的'axios'替换npm的弃用'request'包。
但是,我遇到了一个问题,一个POST请求通过axios发送(其他POST请求我能够实现)
下面是使用'request'包POST的代码
request.post('https://sampleserver6.arcgisonline.com/arcgis/tokens/generateToken', {
form: {
'username': 'user1',
'password': 'user1',
'client': 'requestip',
'expiration': 60,
'f': 'json',
}
}, (err, response, body) => {
console.log('****Token', body)
})
这给出了预期的响应。这是一个令牌。我使用的是一个示例REST服务器“https://sampleserver6.arcgisonline.com/arcgis/tokens/generateToken”
现在,当使用'axios' POST尝试相同的POST请求时,
axios.post('https://sampleserver6.arcgisonline.com/arcgis/tokens/generateToken', {
'username': 'user1',
'password': 'user1',
'client': 'requestip',
'expiration': 60,
'f': 'json',
}, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
})
.then(function(response) {
console.log('****Token', body)
})
响应为200,但响应数据显示错误为“Invalid request Usage:https://sampleserver6.arcgisonline.com/arcgis/tokens?request=gettoken&username=username&password=password&"
当您在表单中未输入值/部分值并单击“生成令牌”时,sample REST server也会出现相同的错误。因此,似乎“axios”无法按预期输入表单数据。
我是否在'axios' POST中使用了正确的实现?
我也试过使用'form-data'包-〉同样的错误
我尝试了不同的Content-Type -〉Issue persists
2条答案
按热度按时间5q4ezhmt1#
使用
URLSearchParams
而不是FormData
对我来说很有效。P.S:没有传递任何标题。
dw1jzc5e2#
您的
Content-Type
值错误。您正在发送一个JS对象,因此内容类型应为application/json
;然而,我建议你让库来决定这个值。你可以用你的navigator开发工具来检查请求,以验证内容类型的值。然而,这应该是可行的:或