如何从请求头中获取user_id,而不是将其作为请求参数传递?然后通过头部将其发送回去。

6 浏览
0 Comments

如何从请求头中获取user_id,而不是将其作为请求参数传递?然后通过头部将其发送回去。

对于各种 REST API 端点,user_id 将传递到后端,以便进行进一步处理,然后作为响应发送回前端。

我有一种感觉,可以通过头部来实现,而不是每次都将其作为路径参数传递,但我似乎还找不到相关的信息。

目前,我将响应发送为 ResponseEntity。如果可能的话,我希望保留这个选项。

我正在使用 Java 和 Spring Boot。

0
0 Comments

在这个问题中,原始的配置中,用户的id是通过请求参数传递的。然而,现在需要从请求头中获取用户id,并将其通过响应头返回。问题的原因是需要改变从请求参数获取用户id的方式。解决方法是通过修改代码来从请求头获取用户id,并将其通过响应头返回。

首先,我们来看一下初始的配置。在这个配置中,使用了注解`@PathVariable`来从请求参数中获取用户id:

(path = "/add-follower/{userIdForFollowing}/{currentUserId}")
public ResponseEntity addFollower(@PathVariable("userIdForFollowing") Long userIdForFollowing, Long currentUserId)
{
    Follow newFollow = followService.returnNewFollow(userIdForFollowing, currentUserId);
    newFollow = followService.saveFollowToDb(newFollow);
    return new ResponseEntity<>("Follow saved successfully", HttpStatus.OK);
}

然后,我们来看一下如何修改端点来从请求头获取id,并将其通过响应头返回。在修改后的配置中,使用了注解`@RequestHeader`来从请求头中获取用户id:

(path = "/add-follower")
public ResponseEntity addFollower(@RequestHeader("userIdForFollowing") Long userIdForFollowing, @RequestHeader("currentUserId") Long currentUserId)
{
    Follow newFollow = followService.returnNewFollow(userIdForFollowing, currentUserId);
    newFollow = followService.saveFollowToDb(newFollow);
    // 在这里添加更多代码,用于替换响应实体中的字符串。
    return new ResponseEntity<>("Follow saved successfully", HttpStatus.OK);
}

通过以上修改,现在可以从请求头中获取用户id,并将其通过响应头返回了。

0
0 Comments

问题的原因:用户想要从请求头中获取user_id而不是作为请求参数传递,然后再通过请求头将其发送回去。

解决方法:用户可以使用HttpServletRequest对象来获取请求头中的user_id,然后通过HttpHeaders对象将其添加到响应头中。可以使用getHeader(String name)方法来获取请求头中的user_id,并可以使用Long.parseLong(...)方法将其解析为long类型。另外,用户还可以使用RequestEntity对象作为handle方法的参数,并使用request.getHeaders().getFirst("user_id")方法来获取请求头中的user_id,并将其解析为Long类型。

以下是代码示例:

("/handle")
public ResponseEntity handle(HttpServletRequest httpRequest) {
  String userId = httpRequest.getHeader("user_id");
  HttpHeaders responseHeaders = new HttpHeaders();
  responseHeaders.set("user_id", userId);
  return new ResponseEntity("Hello World", responseHeaders, HttpStatus.CREATED);
}

如果你觉得我的问题有趣,请给一个赞,这对我和其他可能面临相同挑战的人都有帮助。谢谢!

0