当前位置: 首页 > 知识库问答 >
问题:

@QueryParam或java中的HttpServletRequest

安毅
2023-03-14

我有资源类-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
    } 
}
'''

共有1个答案

鄢雅畅
2023-03-14

好吧,老实说,我看不出有什么吸引人的理由来避免使用@queryparam注释,因为您需要查询参数中的值。

我能想到使用@queryparam的一些好处:

>

  • @queryparam注释将自动将查询参数的值绑定到资源方法参数、资源类字段或资源类bean属性。因此,一旦您遵守了文档中描述的一些规则,就不需要手动提取和解析参数:

      null

    如果多个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