gpt4 book ai didi

java - 发送 id 的常规方式是 @PathParam 或 @HeaderParam 或 @QueryParam?

转载 作者:行者123 更新时间:2023-11-30 06:06:14 26 4
gpt4 key购买 nike

我并不是要求这三者之间存在差异。我正在开发一个使用 JAX-RS 构建的应用程序。它使用 Hibernate 与数据存储进行交互。每个用户都与一个特定的帐户相关联。

当我删除任何用户时,我必须在删除请求的用户后返回该帐户的现有用户列表。我不需要 accountId 来删除用户,但我需要它来获取用户删除后返回的用户列表。我对哪种注释可以作为最佳实践感到困惑?

//Sending accountId in path variable
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
@Path("/user/{accId}/{userId}")
public List<Users> deleteUser(@HeaderParam("token") String token, @PathParam("accId") Integer accId, @PathParam("userId") Integer userId) {
userService.deleteUser(userId);
return userService.getUsers(accId);
}

//Sending accountId in header
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
@Path("/user/{userId}")
public List<Users> deleteUser(@HeaderParam("token") String token, @HeaderParam("accId") Integer accId, @PathParam("userId") Integer userId) {
userService.deleteUser(userId);
return userService.getUsers(accId);
}

//Sending accountId as query string
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
@Path("/user/{userId}")
public List<Users> deleteUser(@HeaderParam("token") String token, @QueryParam("accId") Integer accId, @PathParam("userId") Integer userId) {
userService.deleteUser(userId);
return userService.getUsers(accId);
}

最佳答案

我认为这在很大程度上是基于意见的,并且取决于用户和帐户之间的关系。

如果一个用户仅连接到一个帐户,我会像这样定义 URL:

@DELETE
@Consumes(MediaType.APPLICATION_JSON)
@Path("/account/{accId}/user/{userId}")
public List<Users> deleteUser(@HeaderParam("token") String token, @PathParam("accId")
Integer accId, @PathParam("userId") Integer userId) {
userService.deleteUser(userId);
return userService.getUsers(accId);
}

如果同一用户可能属于不同的帐户,我会将请求分为两个,一个用于删除,第二个用于返回剩余用户:

@DELETE
@Consumes(MediaType.APPLICATION_JSON)
@Path("/user/{userId}")
public void deleteUser(@HeaderParam("token") String token, @PathParam("userId") Integer userId) {
userService.deleteUser(userId);
}

@GET
@Consumes(MediaType.APPLICATION_JSON)
@Path("/user")
public List<Users> getUsers(@HeaderParam("token") String token, @QueryParam("accId") Integer accId) {
return userService.getUsers(accId);
}

关于java - 发送 id 的常规方式是 @PathParam 或 @HeaderParam 或 @QueryParam?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51264423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com