#node.js #express #routes #sequelize.js #postman
#node.js #экспресс #маршруты #sequelize.js #почтальон
Вопрос:
В настоящее время работает над серверной частью в nodejs для страницы входа. Я следую этому руководствуhttps://bezkoder.com/node-js-jwt-authentication-mysql /
Когда я пытаюсь перейти к http://localhost:8080/api/auth/signup в postman я получаю эти ошибки на своем сервере:
установите соответствующий заголовок: Content-Type: application / json, и я также установил тело из test в json в postman
Я полагаю, что это происходит из этого фрагмента кода, но остальная часть кода находится в ссылке github, если вам нужно больше кода.
Ссылка на Github:https://github.com/bezkoder/node-js-jwt-auth
В verifySignup.js:
const db = require("../models");
const ROLES = db.ROLES;
const User = db.user;
checkDuplicateUsernameOrEmail = (req, res, next) => {
// Username
User.findOne({
where: {
username: req.body.username
}
}).then(user => {
if (user) {
res.status(400).send({
message: "Failed! Username is already in use!"
});
return;
}
// Email
User.findOne({
where: {
email: req.body.email
}
}).then(user => {
if (user) {
res.status(400).send({
message: "Failed! Email is already in use!"
});
return;
}
next();
});
});
};
В auth-routes.js мой запрос на регистрацию:
app.post(
'/api/auth/signup',
[
verifySignUp.checkDuplicateUsernameOrEmail,
verifySignUp.checkRolesExisted
],
controller.signup
);
Server.js (весь код):
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
var corsOptions = {
origin: "http://localhost:8081"
};
app.use(cors(corsOptions));
// parse requests of content-type - application/json
app.use(bodyParser.json());
// parse requests of content-type - application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// routes
require('./app/routes/auth.routes')(app);
require('./app/routes/user.routes')(app);
// database
const db = require("./app/models");
const Role = db.role;
//db.sequelize.sync();
// force: true will drop the table if it already exists
db.sequelize.sync({force: true}).then(() => {
console.log('Drop and Resync Database with { force: true }');
initial();
});
// simple route
app.get("/", (req, res) => {
res.json({ message: "Welcome to bezkoder application." });
});
// set port, listen for requests
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}.`);
});
function initial() {
Role.create({
id: 1,
name: "user"
});
Role.create({
id: 2,
name: "moderator"
});
Role.create({
id: 3,
name: "admin"
});
}
Комментарии:
1. Можете ли вы добавить текст вашего запроса к вопросу? Кроме того, вы настроили анализатор тела в своем экспресс-приложении?
2. Я добавил свой server.js и где я создаю route api для регистрации пользователя. Ссылка на Github находится здесь, если вам нужно больше кода: github.com/bezkoder/node-js-jwt-auth
3. Насколько я могу судить, это выглядит нормально. Можете ли вы добавить скриншот вашего запроса postman или просто
curl
?4. Я добавил скриншот в сообщения
Ответ №1:
Вы отправляете пустое тело запроса в своем запросе POST. Убедитесь, что передали объект со всеми необходимыми данными:
{
"username": "userNameToSignUp",
"email": "email@address.com"
// tbd - other fields you need
}
Ответ №2:
Я столкнулся с точной проблемой, с которой вы столкнулись, используя тот же код, и я исправил это, просто отправив запрос в формате JSON вместо текста. В интерфейсе POSTMAN перейдите на вкладку «Тело» и переключите «Текст» на «JSON»
Ответ №3:
Я реализовал этот код и добавил в него больше функциональности, что может помочь вам это репозиторий с большей функциональностью, и проблема в вашем приложении заключается в том, что вы отправляете пустой запрос post, который вызывает ошибку
{
"username": "UserName",
"email": "email@address.com",
"password" : "password"
}
ссылка на код, которую вы указали, очень проста: вы раскомментируете initial()
функцию каждый раз, когда я добавляю условие, поэтому, когда мы удаляем базу данных или запускаем приложение, вам не нужно комментировать или раскомментировать initial()
функцию
Комментарии:
1. Это в основном то, что я уже предлагал, верно?
2. да, и я реализовал демонстрацию, о которой он упоминал выше