React native Axios请求失败,状态代码为406
我尝试将数据从axios的react本机多步骤表单提交到带有api平台的symfony后端 我使用axios处理如下请求:React native Axios请求失败,状态代码为406,react-native,axios,form-data,React Native,Axios,Form Data,我尝试将数据从axios的react本机多步骤表单提交到带有api平台的symfony后端 我使用axios处理如下请求: const contactProject = new FormData() contactProject.append('propertyType', defaultpropretyType) axios .post(`${API.URL}/contact_projects`, contactProject, { headers
const contactProject = new FormData()
contactProject.append('propertyType', defaultpropretyType)
axios
.post(`${API.URL}/contact_projects`, contactProject, {
headers: {
Authorization: `Bearer ${this.props.token}`,
'Content-Type': 'multipart/form-data'
}
})
.then(response => {
console.log('LA REPONSE DE POST CONTACT PROJECT')
console.log(response)
})
.catch(error => {
console.log('ERROR POST CONTACT PROJECT')
console.log(contactProject)
console.log(error)
})
然后我用axios post将对象发送到api,如下所示:
const contactProject = new FormData()
contactProject.append('propertyType', defaultpropretyType)
axios
.post(`${API.URL}/contact_projects`, contactProject, {
headers: {
Authorization: `Bearer ${this.props.token}`,
'Content-Type': 'multipart/form-data'
}
})
.then(response => {
console.log('LA REPONSE DE POST CONTACT PROJECT')
console.log(response)
})
.catch(error => {
console.log('ERROR POST CONTACT PROJECT')
console.log(contactProject)
console.log(error)
})
我发送给api的表单数据对象如下所示:
FormData {
"_parts": Array [
Array [
"propertyType",
"maison",
],
Array [
"budget",
"0",
],
Array [
"surface",
5,
],
Array [
"nbRooms",
5,
],
Array [
"tradeOperationType",
"/trade_operation_types/1",
],
],
}
这就是我收到406错误的原因,我需要一个纯json对象来发送,那么如何将FormData转换为json呢?只需发送即可。
对于您的情况:
const contactProject={
propertyType: defaultpropretyType,
...
}
axios
.post(`${API.URL}/contact_projects`, contactProject, {
headers: {
Authorization: `Bearer ${this.props.token}`,
'Content-Type': 'application/json'
}
})
我应该何时使用表单数据?我很困惑,因为我使用了来自登录组件的表单数据,服务器端决定接受哪种类型。表单数据是旧的方式,换句话说,这是web的“本机”数据类型,但是现在我们经常直接使用JSON,当我们直接使用JSON时,我们应该添加请求头内容类型:application/jsonSorry,我编辑了答案,更改了内容类型。