【发布时间】:2019-05-14 09:29:14
【问题描述】:
我有资源类 - UserResource 接口,我已将端点定义为 getUsers。
现在我想根据用户状态过滤这些用户 - (活动,非活动)并且它不是强制性的,所以如果我没有通过状态,它将获取所有用户。
现在的问题是我应该将其作为 @QueryParam 传递还是从
获取HttpServletRequest - httpServletRequest.getParameter("Status").
以上两种中哪一种是最好的方法,在什么情况下我应该使用哪一种。
1. 第一种方法是将状态作为查询参数传递并在资源文件本身中定义。这里的 UserResource 是控制器接口或资源类。在 getUsers 方法中有 @QueryParam。
import javax.ws.rs.core.Response;
@Path(/user)
public interface UserResource{
@GET
@Path("/")
@Produces({ MediaType.APPLICATION_JSON })
Response getUsers(@QueryParam("status") String status);
}
@Component
Public class UsersResourceImpl implement UserResource{
public Response getPlan(String status){
String userStatus = status;
// some logic
}
}
2. 第二种方法是从 HttpServletRequest 获取查询参数。所以我有 自动装配 HttpServletRequest 并从 httpservlet 请求。
import javax.ws.rs.core.Response;
@Path(/user)
public interface UserResource {
@GET
@Path("/")
@Produces({ MediaType.APPLICATION_JSON })
Response getUsers();
}
import javax.servlet.http.HttpServletRequest;
@Component
Public class UsersResourceImpl implements UserResource{
@Autowired
private HttpServletRequest httpRequest;
public Response getPlan(String status){
String status = httpRequest.getParameter(status)
// some logic
}
}
'''
【问题讨论】: