Я пытаюсь сделать простой запрос POST, но я получаю пустой ответ от сервера.Я перебрал все вопросы SO по этой теме и попробовал опубликованные решения, но безрезультатно.
Я попытался изменить параметры заголовка запроса для использования 'application/x-www-form-urlencoded'
и установить bodyParser в моем экспресс-приложении какapp.use(bodyParser.urlencoded({ extended: true }));
но это тоже не сработало.
auth-service.service.ts
login(loginInfo: object) {
return this.http.post<loginInfo>(this.loginUrl, { "test": "test" })
.pipe(
catchError(this.handleError)
);
}
private handleError(error: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
console.log('An error occured:', error.error.message);
} else {
console.log(`Backend returned code ${error.status}, ` +
`body was ${error.error}`);
}
return throwError('Something bad happened; please try again later.')
}
login.component.ts (вызываетметод входа в систему)
onSubmit() {
const loginInfo = { username: this.username.value, password: this.password.value };
this.authService.login(loginInfo).subscribe(
resp => { console.log(resp); },
err => { console.log(err); }
)
}
server.js (здесь я определил маршруты, но они не актуальны)
const express = require('express');
const bodyParser = require('body-parser');
const api = require('./routes/api');
const app = express();
const port = process.env.port || 3000;
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
next();
})
app.use(bodyParser.json());
app.use('/api', api)
app.get('/', function (req, res) {
res.send(JSON.stringify('Hello from server'));
})
app.post('/login', (req, res) => {
let userData = req.body
res.send('Request body: ' + JSON.stringify(userData));
})
app.listen(port, function () {
console.log('Server running on localhost: ' + port);
});
I 'm консоль регистрирует следующее:
Backend returned code undefined, body was undefined
Something bad happened; please try again later.
Однако, когда я пытаюсь использовать Postman, я получаю ожидаемый ответ (то есть Request body: {}
)
Я не уверен, почему ответ получается, когда он выполняется через Postman, а не через приложение.
Любая помощь приветствуется.Спасибо!