Сценарий
У меня есть Angular 6, который взаимодействует с Spring Boot. Серверная часть использует PostgreSQL в качестве базы данных. Я хочу отправить имя пользователя в базу данных, а затем вернуть его электронное письмо и распечатать его на странице, используя Angular 6.
Но я борюсь с запросом Angular POST, когда при подписке на него я получаю ошибку синтаксического анализа JSON в инструментах разработчика Chrome.
код
Пружинный ботинок
Это работает нормально, так как я проверил это, напечатав письмо, возвращенное из базы данных на консоли.
@RequestMapping(value = "/reset", method = RequestMethod.POST)
public String resetMail(@RequestBody String username) {
try{
User user = userService.findByUsername(username);
//System.out.println(user.getEmail()); Testing purpose
return user.getEmail();
}catch(Exception e) {
//e.printStackTrace(); Prints out NullException StackTrace.
return "Not Present";
}
}
Угловой 6
В следующем коде проблема, по-моему, заключается в методе подписки, поскольку я получаю ошибку синтаксического анализа JSON в инструментах разработчика Chrome.
httpOptions = { headers: new HttpHeaders({'Content-Type':'text/plain', 'Access-Control-Allow-Origin': '*'})};
reset(username:string) {
this.http.post('http://localhost:8090/reset', username, this.httpOptions).subscribe(data=> {
this.email = data as any;
});
}
console.log(this.email) // Prints undefined
Error
HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:8090/reset", ok: false, …}
>error: {error: SyntaxError: Unexpected token a in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttp…, text: "abcdefg@yahoo.com"}
>headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure during parsing for http://localhost:8090/reset"
name: "HttpErrorResponse"
ok: false
status: 200
statusText: "OK"
url: "http://localhost:8090/reset"