如何为 JAX-RS 提供@PATCH注释?

2022-08-31 13:20:50

JAX-RS 具有 HTTP 谓词(如 () 和 ())的注释,但没有注释。如何为 HTTP 谓词设置注释?GET@GETPOST@POST@PATCHPATCH

如下所示:

@PATCH
public Response someCode() {
    // Code to handle the request
}

答案 1

我在这里得到了答案。

只需要定义一个自定义的 Patch 注释,这意味着您必须使用以下代码编写一个 PATCH.java 文件:

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH {
}

导入包含 PATCH 的包.java然后可以像其他 HTTP 方法注释一样使用它:

@PATCH
@Path("/data/{keyspace}")
@Produces({ "application/json" })
public void patchRow(@PathParam("keyspace") String keyspace, String body) 
throws Exception

我用这个@PATCH向我的REST服务发送了一些JSON。


答案 2

使用 JAX-RS 2.1?

JAX-RS 2.1@PATCH添加到受支持的 HTTP 方法列表中。

使用 Swagger?

使用 Swagger 记录 REST API 时,可以使用包中定义的现有@PATCH注释。io.swagger.jaxrs

使用泽西岛和Dropwizard?

Dropwizard 在包中定义@PATCH注释。io.dropwizard.jersey

写你自己的

如果上述方法对您不起作用,您可以编写自己的注释:@PATCH

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH { }

@HttpMethod注释用于将 HTTP 方法的名称与注释相关联,从而创建 JAX-RS 规范所称的资源方法指示符

你自己的注释在Swagger中应该可以正常工作@PATCH


推荐