#.net #angular #rest #asp.net-core #.net-core
#.net #angular #отдых #asp.net-core #.net-core
Вопрос:
Я пытаюсь подключить свой интерфейс в Angular к Api, разработанному с использованием .NETCore, но я получаю следующую ошибку
Http failure during parsing for http://localhost:5000/User/register
Несмотря на ошибку, пользователи все еще сохраняются в базе данных.
Ниже приведены моя служба rest, мои компоненты ts и метод register в серверной части
Служба Rest
const endpoint = 'http://localhost:5000/';
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
}),
};
@Injectable({
providedIn: 'root'
})
export class RestService {
constructor(private http: HttpClient) { }
private extractData(res: Response) {
let body = res;
return body || {};
}
addUser(user: User): Observable<User> {
return this.http.post<User>(
endpoint 'User/register',
JSON.stringify(user),
httpOptions
);
}
}
Зарегистрировать Component .ts
@Component({
selector: 'app-register',
templateUrl: './register.component.html',
styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {
@Input() userData: User = new User();
constructor( public rest: RestService,
private route: ActivatedRoute,
private router: Router) { }
ngOnInit(): void {
}
addUser() {
this.rest.addUser(this.userData).subscribe(
(result:any) => {
console.log(result);
this.router.navigate(['/login']);
},
(err) => {
console.log(err);
console.log("DADOS" JSON.stringify(this.userData));
}
);
}
}
Метод в серверной части
[AllowAnonymous]
[HttpPost("register")]
public IActionResult Register([FromBody]RegisterModel model)
{
var user = _mapper.Map<User>(model);
try
{
// create user
_userService.Create(user, model.Password);
return Ok("Successful registration");
}
catch (AppException ex)
{
// return error message if there was an exception
return BadRequest(new { message = ex.Message });
}
}
Ответ №1:
Вы должны возвращать только текст или только json в серверной части. В то время как возвращает текст при Ok («Успешная регистрация»), он возвращает модель JSON при BadRequest(new { message = ex.Message }).
Это должно выглядеть так:
[AllowAnonymous]
[HttpPost("register")]
public IActionResult Register([FromBody]RegisterModel model)
{
var user = _mapper.Map<User>(model);
try
{
// create user
_userService.Create(user, model.Password);
return Ok("Successful registration");
}
catch (AppException ex)
{
// return error message if there was an exception
return BadRequest(ex.Message);
}
}
И затем вы должны отправить параметр responseType в ваших httpOptions.
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'responseType': 'text'
}),
};