Есть ли тип по умолчанию для производит и потребляет аннотации в остальных 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. Я не настроил какой-либо тип в производит и потребляет в сервисном методе (как вы можете видеть, я прокомментировал это), однако он выполнялся хорошо и выдает вывод - могу ли я знать, как это возможно?
  2. Есть ли у нас тип по умолчанию для производства и потребления?

1 ответ

По умолчанию */*

На стороне сервера

На стороне сервера, если вы не указали Content-Type, он может принять любой тип контента, предоставленный клиентом. Однако если у вас есть определенный формат JSON, XML и т. Д., Вам нужно указать тип контента, чтобы CXF мог вызывать соответствующих провайдеров. В некоторых случаях, когда у вас один и тот же REST-путь с другим Content-Type, он может выбрать соответствующий метод на основе Content-Type. В методе GET, если Content-Type не соответствует, он будет игнорироваться, но не в POST, он выдаст ошибку 415.

На стороне клиента

То же самое относится и к клиентской стороне, однако, как правило, мы указываем тип принятия в случае, если сервер может отправить несколько типов контента, в этом случае мы указываем, какой тип контента мы можем принять. так что сервер может отправлять данные в указанном типе контента, обычно, когда мы предоставляем REST, мы предоставляем с JSON и типом xml, в этом случае нам нужно отправить тип accept на сервер, чтобы сервер мог отправлять либо JSON, либо XML.

Другие вопросы по тегам