В JAX-RS Как принять тело HeaderParam и JSON в одном классе? - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу инкапсулировать параметры ресурса и заголовка / запроса в одном классе.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...