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

说出custom @QueryParam注释

杜浩壤
2023-03-14

我正在使用expertion为我的Resteasy服务生成文档。我能够生成所需的文档,但我对一些自定义参数有疑问。

我们的服务接口由一个自定义的<code>@QueryParam</code>注释组成,用于列出方法实现支持的所有查询参数。我现在不想解释为什么我们决定使用自定义的<code>@QueryParam</code>,这只是一个架构决定。

尽管现在Enunciate无法识别自定义的<code>@QueryParam</code>,所以我所有的Resteasy方法都没有<code>@QueryParam>/code<参数(只有<code>@@PathParam</code>)。

示例服务接口:

@GET
@Path("{regionId}/{userId}/validate-access")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@QueryParams(uniqueName = "validatePin", params = {
        @QueryParam(param = Param.PIN, isRequired = true),
        @QueryParam(param = Param.PIN_TYPE, isRequired = false, valueSet = { "valueA", "valueB" }, defaultValue = "valueA") })
StatusResponseResult validatePin(@Context HttpServletRequest hsr, @PathParam("regionId") int regionId,
        @PathParam("userId") int userId, @Context UriInfo info) throws RestApiException;

@QueryParam类的实现:

@Retention(RetentionPolicy.RUNTIME) 
public @interface QueryParam {
    public Param param();
    public boolean isRequired() default false;
    public boolean canBeEmpty() default true;
    public String defaultValue() default "";
    public String minValue() default "";
    public String maxValue() default "";
    public String format() default "";
    public String[] valueSet() default {};
}

@QueryParams类的实现:

@Retention(RetentionPolicy.RUNTIME)
public @interface QueryParams {
    String uniqueName();
    QueryParam[] params();
}

在生成HTML文档时,有没有一种方法可以让expertion也考虑我的自定义< code>@QueryParam?

共有2个答案

戚浩淼
2023-03-14

好的,有了@ResourceMethodSignature我就可以获取文档中的所有参数(查询和路径)。唯一的缺点是我需要在@ResourceMethodSignature中再次列出参数。如果在添加新参数(或删除)时忘记更新@ResourceMethodSignature,则文档将不同步。

例子:

@ResourceMethodSignature(
      pathParams = { @PathParam("regionId"),@PathParam("userId") },
      queryParams = { @javax.ws.rs.QueryParam("pin"), 
                      @javax.ws.rs.QueryParam("pin_type") }
)

当您“阅读”所有@javax.ws.rs.QueryParam时,您认为您还可以考虑其他注释吗?

龙永思
2023-03-14

您可以尝试使用 @ResourceMethodSignature 注释来显式告诉 Enquiciate 该方法正在尝试执行的操作。更多信息在这里。

您可以尝试应用@QueryParams注释和@QueryParam注释。

如果这些都不起作用,我唯一能想到的就是创建一个自定义 Enarticulate 模块来设置自定义@QueryParams注释尝试声明的模型。更多(但不多)信息在这里。

 类似资料:
  • JSF为开发人员提供了强大的功能来定义自己的自定义标记,可用于呈现自定义内容。 在JSF中定义自定义标记分为三个步骤。 步 描述 1a 创建一个xhtml文件,并使用ui:composition标签在其中定义内容 1b 创建标记库描述符(.taglib.xml文件)并在其中声明上面的自定义标记。 1c 在web.xml中注册标记libray描述符 步骤1a:定义自定义标签内容:buttonPane

  • 问题内容: 我正在使用Jersey for Rest,并且有一种方法可以接受 但是,用户可以这样发送: 哪里是0-155之间的数字。 如何在QueryParam中定义它(如正则表达式)? 问题答案: 您不能指定正则表达式。但是,您可以定义一个自定义Java类型来表示该查询参数,并实现您自己从String到该类型的转换- 请参见http://jersey.java.net/nonav/documen

  • 我有资源类-UserResource接口,并定义了一个endpoint为GetUsers。 现在,我希望根据用户状态(活动、非活动)和它不是强制性的来过滤这些用户,所以如果我没有传递状态,它将获取所有用户。 2.第二种方法是从HttpServletRequest获取查询参数。因此,我已经获得了HttpServletRequest并从HttpServletRequest中获取查询参数。

  • 我试着把<代码> 作为比较,web应用程序是使用spring boot构建的,默认情况下,spring boot也会注册一些MBean。我可以在这两种场景中看到spring boot的MBean。 我进一步调查了一下,发现logback总是从获取MBeanServer实例,而Spring在Webphere/Weblogic环境中使用不同的方法。 在Websphere环境中,为远程连接而公开的MBe

  • G01在安装时需要通过账号进行绑定,同时PC端与云中心也需要通过账号登录进行使用。 通过G01官网进入注册页面,第一步填写注册信息,依次输入邀请码、注册用户名、密码、详细地址,保存后后进入第二步进行单位登记。建议使用IE9以上浏览器或者Firefox、Chrome。 获取“邀请码”可联系区域服务中心;或填写《网防G01邀请码申请》并发送至 G01-key@gov110.cn 进行申请,收到申请审核

  • 我不是在问这里已经问过的问题:@PathParam和@QueryParam之间有什么区别 这是一个“最佳做法”或惯例问题。 何时使用和。 我能想到的是,这个决定可能是利用这两者来区分信息模式。让我在下面举例说明我的LTPO-不够完美的观察。 PathParam的使用可以保留给information category,它很好地属于information Tree的一个分支。PathParam可用于向