Простите, но я, возможно, не знаком со всеми языками, необходимыми для правильной постановки этого вопроса.
Я работаю над довольно простым веб-сервисом REST на Java с использованием org.apache.cxf.jaxrs.ext
реализации jax-rs.Заголовок метода выглядит следующим образом:
@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, чтобы делать то, что я хочу, но я не знаю много об этом.
Как бы я изменил тип контента и / иликоды состояния внутри этого метода?