我想将资源和标头/查询参数封装在同一类中。
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。