我有资源类-UserResource接口,并定义了一个endpoint为GetUsers。
现在,我希望根据用户状态(活动、非活动)和它不是强制性的来过滤这些用户,所以如果我没有传递状态,它将获取所有用户。
HttpServletRequest - httpServletRequest.getParameter("Status").
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并从HttpServletRequest中获取查询参数。
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
}
}
'''
好吧,老实说,我看不出有什么吸引人的理由来避免使用@queryparam
注释,因为您需要查询参数中的值。
我能想到使用@queryparam
的一些好处:
>
@queryparam
注释将自动将查询参数的值绑定到资源方法参数、资源类字段或资源类bean属性。因此,一旦您遵守了文档中描述的一些规则,就不需要手动提取和解析参数:
如果多个endpoint支持相同的查询参数,您可以将它们聚合到一个类中,并接收此类的实例,例如@beanparameter
。
问题内容: 我不是在问这里已经问过的问题: @PathParam和@QueryParam有什么区别 这是一个“最佳做法”或约定俗成的问题。 当你使用。 我能想到的决定可能是使用两者来区分信息模式。让我在下面说明我的LTPO-不够完美。 可以为信息类别保留PathParam的使用,它很好地属于信息树的一个分支。PathParam可用于向下钻取实体类层次结构。 而QueryParam可以保留用于指定属
我有一个GET请求电话,如下所示 参数类型错误 下面是请求类: 我不确定我为什么会得到这个。以下是我的IDE的建议。 成为原始类型 有一个接受单个String参数的构造函数 有一个名为valueOf或fromString的静态方法,它接受一个String参数(例如,请参见Integer.valueOf(String)) 具有ParamConverterProvider JAX-RS扩展SPI的注册
我一直在试图找到一个答案,如果在何时/何时不使用上面的向REST调用传递信息的方法方面有某种标准的话。 我到处都在找,但每一个帖子都只讨论列出的方法中的2种,或者3种,而不是全部4种之间的区别。
如何向以下服务发出GET请求: 我用这个: 我关心的是如何将集合传递为QueryParam。是否可以使用传递的http数据发出GET请求? 谢谢你的帮助。
问题内容: JAX-RS 和 之间有什么区别?从文档中,queryparam和matrixparam都可以在特殊条件下定位一个资源。那么用例有什么区别? ps: Queryparam: 矩阵参数 问题答案: 如本Oracle文档所述: 在和其他基于参数的注解, ,,,遵守同样的规则。从URL路径段中提取信息。从HTTP标头中提取信息。从与Cookie相关的HTTP标头中声明的Cookie中提取信息
问题内容: 我正在使用Jersey for Rest,并且有一种方法可以接受 但是,用户可以这样发送: 哪里是0-155之间的数字。 如何在QueryParam中定义它(如正则表达式)? 问题答案: 您不能指定正则表达式。但是,您可以定义一个自定义Java类型来表示该查询参数,并实现您自己从String到该类型的转换- 请参见http://jersey.java.net/nonav/documen