#c# #angular
#c# #angular
Вопрос:
У меня есть следующий метод в моем пользовательском контроллере:
[HttpPost]
public async Task<ActionResult<bool>> Create(User user)
{
var userCreated = userService.register(user); // returns true or false
if (userCreated)
{
return Ok();
}
else
{
return BadRequest("Could not create user.");
}
}
Затем этот метод должен быть захвачен в моем angular, вызывающем службу:
onSubmit(user: User): void {
this.userService.registerUser(user).subscribe((response) => {
console.warn(response);
});
}
Метод регистрации URL-адреса:
registerUser(user: User): Observable <boolean> {
const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };
return this.http.post<boolean>(environment.userUrl, user, httpOptions);
}
К сожалению, консоль записывает null. Я что-то упускаю? Я хочу зафиксировать, является ли статус OK
or BadRequest
.
Ответ №1:
В вашем контроллере вам не хватает, чтобы вернуть значение вашего ответа:
[HttpPost]
public async Task<ActionResult<bool>> Create(User user)
{
var userCreated = userService.register(user); // returns true or false
if (userCreated)
{
return Ok(userCreated); // <= HERE
}
else
{
return BadRequest("Could not create user.");
}
}
После изменения вышесказанного все должно быть в порядке.
Небольшой совет заключается в том, что вам не нужно добавлять HttpOptions
при каждом запросе в Angular. Это HttpClient
делает это за вас:
registerUser(user: User): Observable<boolean> {
return this.http.post<boolean>(environment.userUrl, user);
}
PS: Ok()
в C # означает, что вы возвращаете ответ с кодом 200.
С другой стороны, a BadRequest()
выдаст код ошибки 400 и будет перехвачен как ошибка внутри подписки. В вашем случае я считаю, что код в серверной части должен быть таким:
[HttpPost]
public async Task<ActionResult<bool>> Create(User user)
{
var userCreated = userService.register(user); // returns true or false
return Ok(userCreated);
}
Комментарии:
1. Вероятно, он хочет вернуть созданного пользователя обратно клиенту, а не флаг. Также
BadRequest()
приводит к400
нет500
.2. Спасибо
BadResult
, вы правы. Все, что он хочет вернуть, должно быть внутриOK()
🙂3. @StPaulis Большое вам спасибо. Это помогает.