Простите меня, но я, возможно, не знаком со всем жаргоном, чтобы правильно задавать этот вопрос.
Я работаю над довольно простой веб-службой REST на Java, используя реализацию jax-rs org.apache.cxf.jaxrs.ext
. Заголовок метода выглядит следующим образом:
@GET
@Path("json/{fullAlias}")
@Produces({"application/json"})
public String json(@PathParam("fullAlias") String fullAlias, @Context MessageContext req)
где MessageContext org.apache.cxf.jaxrs.ext.MessageContext
.
Есть две вещи, которые я пытаюсь выполнить, я не могу понять:
- Измените тип содержимого, если выполняются определенные условия (например, для ошибки)
- Измените код состояния ответа
Я попытался изменить ответ, обратившись к нему через MessageContext:
HttpServletResponse response = req.getHttpServletResponse();
response.setContentType("text/plain")
response.setStatus("HttpServletResponse.SC_BAD_REQUEST);
Но эти изменения не влияют на отправленный ответ; с аннотацией @Produces или без нее, настройка типа содержимого внутри метода не влияет на фактический тип контента (с аннотацией он, конечно же, возвращает "application/json", без необходимости по умолчанию "text/html" ).
Я возвращаю простую строку как тело. Я развлекался, пытаясь вернуть объект javax.ws.rs.core.Response, чтобы делать то, что я хочу, но я мало знаю об этом.
Как изменить тип контента и/или коды состояния из этого метода?