我目前正在使用Jersey
(JAX-RS)和Moxy
构建Java应用程序。一切都很好,但我也想支持PATCH
HTTP方法。我为PATCH
方法创建了自定义注释,但补丁请求的媒体类型将为application/json-patch+json
,由于某种原因我无法获取请求正文
我的PATCH.java
文件
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
@Documented
@NameBinding
public @interface PATCH {
}
我的TestResource.java
文件
@Path("/tests")
public class TestResource {
private @Context ContainerRequestContext context;
@PATCH
@Path("/{id}")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ "application/json-patch+json" })
public Response patchTest(final String body) {
Log.info("Body: " + body);
}
}
我正在尝试修补资源,如下面的
curl -s -H "Accept: application/json" \
-H "Content-Type: application/json-patch+json" \
-d '[{"op":"replace","path":"/abc","value":"xyz"}]' \
-X PATCH http://localhost/tests/1
我确实收到了请求,但未捕获请求正文。我尝试使用POJO
,String
,byte[]
等。但是POST
和PUT
工作得很好(我想因为消费媒体类型是{{ 1}})
希望我收到所有细节,如果我遗漏任何细节,请随时问我。希望有人在此之前遇到过这个问题