POST触发服务器api并响应客户端500(内部服务器错误)

时间:2018-10-05 02:38:17

标签: reactjs api post sails.js axios

我使用Sails服务器api,我从axios发布,​​但出现错误500(内部服务器错误)。 这里的代码客户端

export default function callApi2(endpoint, method = 'GET', body) {
  
  let headers = { 'content-type': 'application/x-www-form-urlencoded' }
  console.log(body);
  
  return axios({
    method: method,
    url: `${Config.API_URL2}/${endpoint}`,
    data: JSON.stringify(body),
    headers: { 'content-type': 'application/x-www-form-urlencoded' },

  }).catch(err => {
    console.log(err);
  });

此处是代码服务器

    postCommunication: async (req, res)=>{
      res.header('Access-Control-Allow-Origin', '*');
      res.header('Access-Control-Allow-Headers', 'Content-Type');
      res.header('Access-Control-Allow-Methods','GET, POST, PATCH, PUT, DELETE, OPTIONS');

      let newCommunication = req.body;
      console.log(newCommunication);
      console.log(JSON.stringify(newCommunication));


      let resulfCommunication = await Communication.create(JSON.stringify(newCommunication)).fetch();
      return  res.json(resulfCommunication);
    },

1 个答案:

答案 0 :(得分:2)

HTTP状态500表示服务器端崩溃。发生这种情况是因为您在Axios代码上传递了错误的内容类型,该类型应为"application/json"

export default function callApi2(endpoint, method = 'GET', body) {

  let headers = { 'content-type': 'application/json' }
  console.log(body);

  return axios({
    method: method,
    url: `${Config.API_URL2}/${endpoint}`,
    data: JSON.stringify(body),
    headers: { 'content-type': 'application/json' },
  }).catch(err => {
    console.log(err);
  });

由于您提到也不需要CORS标头,因此您也可以删除以下代码:

 res.header('Access-Control-Allow-Origin', '*');
 res.header('Access-Control-Allow-Headers', 'Content-Type');
 res.header('Access-Control-Allow-Methods','GET, POST, PATCH, PUT, DELETE, OPTIONS');

欢迎使用StackOverflow,如果您发现此答案有帮助,可以将其标记为答案,这样可以帮助遇到您遇到的相同问题的人。