Получить запрос с телом? angular - PullRequest
0 голосов
/ 17 апреля 2020

angular service

  public extractUsername(token) {
    const headers = new HttpHeaders();
    headers.set('token', token);
    return this.http.get('http://localhost:8081/extractUsername', {headers});
  }

метод весенней загрузки

@GetMapping("/extractUsername")
public String extractUsername(@RequestBody(required=false) TokenRequest tokenRequest)  {
    String username = jwtUtil.extractUsername(tokenRequest.getToken());
    return username;
}

Я не могу получить токен с этим angular запросом

Так что мой вопрос: могу ли я использовать метод requestbody с запросом get? В почтальоне все работает как надо, если возможно, как должен выглядеть сервис angular? Я новичок в angular спасибо за ответ.

enter image description here

enter image description here

1 Ответ

2 голосов
/ 18 апреля 2020

На стороне Angular значение заголовка не устанавливается. Вам необходимо присвоить результат набора или добавления обратно переменной:

const headers = new HttpHeaders().set('token', token); 

В контроллере вы должны извлечь заголовок из запроса. В Spring вы можете сделать это, используя аннотацию @RequestHeader:

@GetMapping("/extractUsername")
public String extractUsername(@RequestHeader(value="token") String token)  {
    String username = jwtUtil.extractUsername(token);
    return username;
}

В качестве альтернативы, вы также можете добавить HttpServletRequest в метод и извлечь его из запроса:

@GetMapping("/extractUsername")
public String extractUsername(HttpServletRequest request)  {
    String username = jwtUtil.extractUsername(request.getHeader("token"));
    return username;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...