Есть ли тип по умолчанию для производит и потребляет аннотации в остальных CXF
Ниже приведен пример, который я пробовал:
Объявление метода обслуживания:
@POST
//@Produces(MediaType.APPLICATION_JSON)
//@Consumes({"application/xml", MediaType.TEXT_PLAIN})
@Path("/agentLogout")
public String agentLogout(String ext) {
JSONObject obj = new JSONObject();
obj.put("status", "LoggedOut");
return obj.toString();
}
Код на стороне клиента:
WebClient client = WebClient.create(REST_URI);
client.path("agentLogout").accept(MediaType.APPLICATION_JSON);
Response agentLogoutResponse = client.post("3101");
String responseStr = agentLogoutResponse.readEntity(String.class);
try {
JSONObject json = (JSONObject)new JSONParser().parse(responseStr);
System.out.println("3101 DN--->"+json.get("status"));
} catch (ParseException e) {
e.printStackTrace();
}
Приведенный выше пример работал нормально и выдает результат, как показано ниже:
3101 DN ---> LoggedOut
Мои вопросы:
- Я не настроил какой-либо тип в производит и потребляет в сервисном методе (как вы можете видеть, я прокомментировал это), однако он выполнялся хорошо и выдает вывод - могу ли я знать, как это возможно?
- Есть ли у нас тип по умолчанию для производства и потребления?
1 ответ
По умолчанию */*
На стороне сервера
На стороне сервера, если вы не указали Content-Type, он может принять любой тип контента, предоставленный клиентом. Однако если у вас есть определенный формат JSON, XML и т. Д., Вам нужно указать тип контента, чтобы CXF мог вызывать соответствующих провайдеров. В некоторых случаях, когда у вас один и тот же REST-путь с другим Content-Type, он может выбрать соответствующий метод на основе Content-Type. В методе GET, если Content-Type не соответствует, он будет игнорироваться, но не в POST, он выдаст ошибку 415.
На стороне клиента
То же самое относится и к клиентской стороне, однако, как правило, мы указываем тип принятия в случае, если сервер может отправить несколько типов контента, в этом случае мы указываем, какой тип контента мы можем принять. так что сервер может отправлять данные в указанном типе контента, обычно, когда мы предоставляем REST, мы предоставляем с JSON и типом xml, в этом случае нам нужно отправить тип accept на сервер, чтобы сервер мог отправлять либо JSON, либо XML.