Angular 得到身体的请求?有棱角的

Angular 得到身体的请求?有棱角的,angular,spring,typescript,http,Angular,Spring,Typescript,Http,角度服务 public extractUsername(token) { const headers = new HttpHeaders(); headers.set('token', token); return this.http.get('http://localhost:8081/extractUsername', {headers}); } 弹簧引导法 @GetMapping("/extractUsername") public String extr

角度服务

  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;
}
我无法通过此请求获取令牌

所以我的问题是,我可以在get请求中使用requestbody方法吗?在《邮递员》中,它应该工作,如果可能的话,角形服务应该是什么样子? 我是新手,谢谢你的回复


在角度侧,未设置收割台值。您需要将集合赋值或将结果追加回变量:

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;
}

但是当我在angular中使用spring PostMapping并更改get to post时,在postman中它仍然有效,但是当我尝试使用angular访问它时,它会给我相同的错误。开发者控制台网络选项卡中的错误是什么?我上传了屏幕截图,当我将其更改为PostMapping时,它会给我相同的错误,但带有此消息“JWT字符串参数不能为null或空。”