@java中的QueryParam或HttpServletRequest
我有一个resource类-UserResource接口,并将端点定义为getUsers 现在,我想根据用户状态(活动、非活动)筛选这些用户,并且它不是必需的,因此如果我不通过状态,它将获取所有用户 现在的问题是,我应该将其作为@QueryParam传递还是从@java中的QueryParam或HttpServletRequest,java,rest,Java,Rest,我有一个resource类-UserResource接口,并将端点定义为getUsers 现在,我想根据用户状态(活动、非活动)筛选这些用户,并且它不是必需的,因此如果我不通过状态,它将获取所有用户 现在的问题是,我应该将其作为@QueryParam传递还是从 HttpServletRequest-HttpServletRequest.getParameter(“状态”)。 以上两种方法中的哪一种是最好的方法,在什么情况下我应该使用哪一种 1。第一种方法是将状态作为查询参数传递,并在资源文件本
HttpServletRequest-HttpServletRequest.getParameter(“状态”)。
以上两种方法中的哪一种是最好的方法,在什么情况下我应该使用哪一种
1。第一种方法是将状态作为查询参数传递,并在资源文件本身中定义。这里UserResource是控制器接口或资源类。在getUsers中,方法具有@QueryParam
导入javax.ws.rs.core.Response;
@路径(/user)
公共接口用户资源{
@得到
@路径(“/”)
@产生({MediaType.APPLICATION_JSON})
响应getUsers(@QueryParam(“status”)字符串状态);
}
@组成部分
公共类UsersResourceImpl实现UserResource{
公共响应getPlan(字符串状态){
字符串userStatus=status;
//一些逻辑
}
}
2.第二种方法是从HttpServletRequest获取查询参数。所以我有
自动连接HttpServletRequest并从
httpservletrequest
导入javax.ws.rs.core.Response;
@路径(/user)
公共接口用户资源{
@得到
@路径(“/”)
@产生({MediaType.APPLICATION_JSON})
响应getUsers();
}
导入javax.servlet.http.HttpServletRequest;
@组成部分
公共类UsersResourceImpl实现UserResource{
@自动连线
私有HttpServletRequest httpRequest;
公共响应getPlan(字符串状态){
字符串状态=httpRequest.getParameter(状态)
//一些逻辑
}
}
'''
使用注释(即@QueryParam)这就是我们选择这种框架的原因,记住约定优于配置好吧,老实说,我看不出有任何吸引人的理由避免使用注释,因为您需要查询参数的值
我能想到的使用它的一些好处:
- 注释将自动将查询参数的值绑定到资源方法参数、资源类字段或资源类bean属性。因此,一旦您遵守以下内容中描述的一些规则,就不需要手动提取和解析参数:
带注释的参数、字段或属性的类型
必须为:T
- 是原始类型
- 具有接受单个字符串参数的构造函数
- 具有一个名为
或valueOf
的静态方法,该方法接受单个fromString
参数(例如,请参见)String
- 拥有JAX-RS扩展SPI的注册实现,该实现返回一个能够对类型进行“from string”转换的实例。
Be
、List
或Set
,其中T满足上述2、3或4。生成的集合是只读的SortedSet
- 可以与结合使用,以便在请求中不存在参数的情况下为参数定义默认值
- 如果多个端点支持相同的查询参数,则可以将它们聚合到一个类中,并以类的形式接收此类的实例