尝试从客户端向服务器发送数据时,POST http:// localhost:3000 / data 400(错误请求)

时间:2020-07-22 07:18:03

标签: javascript node.js server backend

大家好,我在从客户端向服务器端发送数据时遇到了一些问题。 基本上,我有一个函数,单击后将名为categorySearch的变量设置为字符串,例如categorySearch =“ pork”并将其发送到服务器;但是由于某种原因,我一直在标题中提到错误。这是一些代码: 客户端

function getRecipes(category){
    const categorySearch = category.alt;
    const options = {
        method: 'POST',
        headers: {
            'Content-type': 'application/json'
        },
        body: categorySearch
    }
    const response = fetch('/data', options);
    console.log(response);
}

服务器端

const express = require('express');
const app = express();
const fetch = require('node-fetch');
require('dotenv').config();
const API_KEY = process.env.API_KEY;
const port = process.env.PORT || 3000;
app.listen(port, () => console.log('listening at 3000'));
app.use(express.static('public'));
app.use(express.json({ limit: "1mb"}));

app.post('/data', (request, repsonse) => {
    console.log(request.body);
})

不知道我做错了什么,我与后端的合作不多,所以也没有太多的知识,非常感谢任何帮助:)

我的最终目标是能够将用户输入或在这种情况下单击的数据发送到服务器,然后在服务器端对搜索引擎进行api调用,获取我需要的数据,将其发送回客户端服务器并显示在页面上。

1 个答案:

答案 0 :(得分:2)

原因:-

400错误请求错误是HTTP响应状态代码,指示服务器由于语法无效而无法处理客户端发送的请求

根据您的代码,您以json的形式从客户端发送数据,并以纯文本形式在服务器中检索数据,因此请使用application/json或删除该标头部分来代替以text/plain的形式发送,好的,请查看下面的代码。

客户端:-

function getRecipes(category){
const categorySearch = category.alt;
const options = {
    method: 'POST',
    headers: {
        'Content-type': 'text/plain', // or remove this headers section
    },
    bodydata: categorySearch
}
 const response = fetch('/data', options);
 console.log(response);
}

服务器端:

app.post('/data', (request, repsonse) => {
 console.log(request.body.bodydata);
})

希望这会让您对错误有所了解。在此处详细了解400 error

相关问题