В настоящее время я пишу для REST API, который использует JSON для взаимодействия в машинописи и nodejs.
После того, как я написал свой первый маршрут, я хотел проверить его с помощью почтальона, но получил ответ, что не смогPOST to / login (/ login - это первый маршрут, который я реализовал).
После нескольких часов попыток и изменений, несколько раз проверяя, правильно ли я все написал, и, как и в предыдущих проектах, я понял, чтоЯ получаю эту ошибку всякий раз, когда у меня в заголовке Content-Type в Postman установлено значение application / json.
Я снова проверил, действительно ли я использовал body-parser, и уже в index.ts я использовал строку
const express = require('express');
import * as bodyParser from 'body-parser'
(async function() {
const app = express();
app.use(bodyParser.json());
app.listen(8080);
})();
Я просто не знаю, в чем может быть ошибка.
Изменить, чтобы включить больше кода
index.ts
require('dotenv').config();
// import * as bodyParser from 'body-parser';
const bodyParser = require('body-parser');
import * as cors from 'cors';
import {routes} from './routes';
import {errorHandler} from './middleware/error';
const express = require('express');
import {registerServices, ServiceLocator} from './serviceLocator/ServiceLocator';
// import {initialization} from './initialization';
(async function() {
const serviceLocator = new ServiceLocator();
await registerServices(serviceLocator);
await serviceLocator.get("PostgresConnector")._connect();
// await initialization(serviceLocator);
const app = express();
app.locals.serviceLocator = serviceLocator;
app.use(bodyParser.json());
app.use(cors());
routes.forEach(route => app.use(route));
app.use(errorHandler);
app.listen(8080, () => console.log('\x1b[32m%s\x1b[0m', 'Server started'));
})();
index.ts в папке маршрутов
import {authenticationRouter} from "./authentication";
const routes = [
authenticationRouter
];
export {routes};
authentication.ts
import {UserNotFoundError} from "../user/UserRepository";
const router = require('express').Router();
import {validateBody} from '../middleware/bodyValidator';
import {wrapAsync as wa} from '../middleware/wrapAsync';
const loginSchema = {
type: 'object',
properties: {
email: {
type: 'string'
},
password: {
type: 'string'
}
},
required: ['email', 'password'],
additionalProperties: false
};
router.post('/login', validateBody(loginSchema), wa(async (req, res) => {
const sl = res.app.locals.serviceLocator;
const loginController = sl.get('LoginController');
const {email, password} = req.body;
try {
const token = await loginController.login(email, password);
res.json({
token
});
} catch (e) {
if(typeof e === typeof UserNotFoundError) {
res.status(403).json({
message: 'Not successful',
reason: 'Username or password wrong'
});
}
}
}));
export {router as authenticationRouter};