React native Axios请求失败,状态代码为406

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

我尝试将数据从axios的react本机多步骤表单提交到带有api平台的symfony后端

我使用axios处理如下请求:

    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,我编辑了答案,更改了内容类型。