使用Moxy支持其他JSON媒体类型

时间:2016-06-05 08:06:36

标签: java json jax-rs jersey-2.0 moxy

我目前正在使用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

我确实收到了请求,但未捕获请求正文。我尝试使用POJOStringbyte[]等。但是POSTPUT工作得很好(我想因为消费媒体类型是{{ 1}})

希望我收到所有细节,如果我遗漏任何细节,请随时问我。希望有人在此之前遇到过这个问题

0 个答案:

没有答案