在JAX-RS中,如何在单个类中接受HeaderParam和JSON主体?

时间:2018-09-24 07:41:56

标签: jax-rs

我想将资源和标头/查询参数封装在同一类中。

class AddCommentRequest {

    @HeaderParam("X-Session-Id")
    private String sessionId;

    @HeaderParam("X-Request-Id")
    private String requestId;

    // This will be part of POST body.
    private Comment comment;
}

@Path("/")
interface CommentResources {

@POST
@Consumes({ "application/json" })
@Produces({ "application/json" })
@Path("/comments")
    Response addComment(@BeanParam AddCommentRequest request);
}

我知道我可以做以下事情:

@Path("/")
interface CommentResources {

@POST
@Consumes({ "application/json" })
@Produces({ "application/json" })
@Path("/comments")
    Response addComment(@HeaderParam("X-Session-Id") String sessionId,   @HeaderParam("X-Request-Id") String requestId, Comment comment);
}

但是我不想选择这个: 1.它膨胀了方法参数,这也迫使我每次添加新的标头/查询参数时都要更新方法签名。 2.这些参数对于所有API都是通用的,我不想重复自己。

如果有效载荷应该是URI编码的,我本可以使用@FormParam,但就我而言,有效载荷是JSON。

0 个答案:

没有答案