Я установил простое приложение Ioni c 5 и бэкэнд Nest JS. Теперь я хочу отправить POST-запрос из своего приложения на сервер, но всегда получаю следующее сообщение об ошибке в консоли браузера:
Object {headers: {…}, status: 500, statusText : «Внутренняя ошибка сервера», url: «http://localhost: 3000 / api / users », ok: false, name: «HttpErrorResponse», сообщение: «Http error response для http://localhost : 3000 / api / users : 500 Internal Server Error ", ошибка: {…}} home.page.ts: 36: 14
В моем гнезде JS бэкэнд Я получаю это сообщение об ошибке:
[Nest] 18696 - 27.03.2020, 10:39:04 [ExceptionsHandler] Ошибка проверки пользователя: пароль: путь password
требуется ., Имя пользователя: Путь username
требуется., E-mail: Путь email
требуется. + 43794ms
На вкладке сети браузера появляется сообщение об ошибке с кодом состояния 500 (внутренняя ошибка сервера):
Request URL: http://localhost:3000/api/users
Request method: POST
Remote address: 127.0.0.1: 3000
Status code:
500
Version: HTTP / 1.1
Referrer Policy: no-referrer-when-downgrade
Необходимые параметры также отправляются правильно:
{"email":"test@test.de","username":"testname","password":"testpassword"}
Контроллер для моих запросов POST имеет следующую структуру:
@Controller('/users')
export class UsersController {
constructor(private usersService: UsersService) { }
// POST request containing the data required to create a new user
@Post()
async createUser(@Res() res, @Body() createUserDto: CreateUserDto) {
console.log('body', createUserDto);
const user = await this.usersService.create(createUserDto);
if (!user) throw new InternalServerErrorException('User could not be created!');
return res.status(HttpStatus.OK).json({
message: "User has been created successfully",
user
})
}
...
Используемый DTO выглядит следующим образом:
export class CreateUserDto {
readonly email: string;
readonly username: string;
readonly password: string;
}
CORS также активируется в моем бэкэнде Nest JS. Кроме того, забавно, что GET-запросы (через Ioni c, а также через Postman или прямой ввод в браузер) работают. POST-запросы также работают, если я делаю их через Postman или вводю их непосредственно в браузере.
Я тестирую POST-запрос таким образом в моем приложении Ioni c:
ngOnInit() {
this.createAccount(this.createUserDto).subscribe((res) => {
console.log('Request send', res);
}, (err) => {
console.log('Failed', err);
});
}
createAccount(credentials): Observable<any> {
return this.http.post('http://localhost:3000/api/users', JSON.stringify(credentials));
}
Также забавно, что запрос не отправляется, когда я удаляю JSON .stringify (учетные данные) и вводю просто учетные данные без JSON .stringify () .
Что я здесь не так делаю?