gpt4 book ai didi

javascript - Express - POST 和 PUT 的 400 错误请求

转载 作者:行者123 更新时间:2023-12-04 15:35:40 25 4
gpt4 key购买 nike

我需要一些帮助,因为我是 Node.js 和 express 的新手。我在 Postman 上测试了以下代码

const Joi = require('@hapi/joi');
const bodyParser = require('body-parser');

// Load the express framework
const express = require('express');
const app = express();

app.use(express.json());
app.use(bodyParser.json());
app.use(express.urlencoded({ extended: true }));

// temp array
const courses = [
{id: 1, title: 'Learning Node.js'},
{id: 2, title: 'How to become a full stack dev'},
{id: 3, title: 'Master your Javascript skills'}
];
app.post('/api/courses', (request, response) => {
let error = validateCourse(request.body);
if (error) {
response.status(400).send(error.details[0].message); // *
return;
}

let course = {
id: courses.length + 1,
name: request.body.name
};

// TODO save
console.log('TODO save the record');

response.send(course);
});

app.put('/api/courses/:id', (request, response) => {
let course = courses.find(c => c.id === parseInt(request.params.id));
if(!course) response.status(404).send('Oops!');

let { error } = validateCourse(request.body);
if (error) {
response.status(400).send(error.details[0].message);
return;
}

// TODO save
console.log('TODO save the record');

response.send(course);
});


function validateCourse(course) {
let schema = Joi.object({
name: Joi.string().min(4).required()
});
console.log(course);
return schema.validate(course);
}

当我发出 PUT 或 POST 请求时,我提供了 name (即验证应该通过)我收到 400 错误。

在 POST 请求中,我在控制台中看到以下内容,指的是我的星号 (*) 所在的位置
TypeError: Cannot read property '0' of undefined
at /app/index.js:50:48

在 PUT 请求中,我在控制台中看到以下内容 Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
在这两种情况下,我在 validateCourse 函数中的 console.log 都显示一个空对象 {}
这是 postman 的截图
enter image description here

任何想法我做错了什么?

最佳答案

👨‍🏫 我已经测试过了 code我的意思是你可以试试下面的代码 👇:

app.post('/api/courses', (request, response) => {
let { error } = validateCourse(request.body);

if (error) {
response.status(400).send(error.details[0].message); // *
}

let course = {
id: courses.length + 1,
name: request.body.name
};

// TODO save
console.log('TODO save the record');

response.send(course);
});

app.put('/api/courses/:id', (request, response) => {
let course = courses.find(c => c.id === parseInt(request.params.id));

if(!course) response.status(404).send('Oops!');

let { error } = validateCourse(request.body);

if (error) {
response.status(400).send(error.details[0].message);
}

// TODO save
console.log('TODO save the record');

response.send(course);
});


function validateCourse(course) {
let schema = Joi.object({
name: Joi.string().min(4).required()
});
console.log(course);
return schema.validate(course);
}

我希望它可以帮助你🙏。

关于javascript - Express - POST 和 PUT 的 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com