Подписка на Angular 6 POST запрос - PullRequest
0 голосов
/ 28 июня 2018

Сценарий

У меня есть 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"

1 Ответ

0 голосов
/ 28 июня 2018

Вы хотите сериализовать строку в JSON. Если ваш контроллер вернет объект, аннотация @RestController будет правильно сериализовать его. Если вы хотите вернуть только строку, вы должны вернуть JSONObject.quote(user.getEmail()); Вы можете получить зависимость JSONObject отсюда http://mvnrepository.com/artifact/org.json/json Но я призываю вас всегда возвращать объекты в ответ от ваших контроллеров отдыха.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...