Я хочу инкапсулировать параметры ресурса и заголовка / запроса в одном классе.
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.