Вы вводите в заблуждение параметр запроса с полезной нагрузкой почтового запроса.
@QueryParameter Параметры запроса извлекаются из параметров запроса URI запроса и указываются с помощью аннотации javax.ws.rs.QueryParam в аргументах параметра метода.
Параметры запроса являются необязательными, если вы их не установили, они будут установлены в нуль.
если вы хотите сохранить «комментарии & типа» в качестве параметра запроса вы должны передать их следующим образом:
http://<HOST:port>/push?comment=comment1&type=type1
Столб метод Payload вместо этого, что вы будете посылать вместе с запросом вашего POST.
В вашем случае вы передаете «комментарий» и «вводите» в качестве полезной нагрузки, но не привязаны ни к чему.
Если вы хотите получить свою полезную нагрузку, получите сопоставление с объектом, вы должны немного изменить.
Во-первых, создать класс с аннотацией @XmlRootElement
@XmlRootElement
class MyMessage{
String comment;
String type;
//add getter and setter
}
и ваш отдых API точки входа будет выглядеть следующим образом:
@POST
@Path("/push")
@Consumes(MediaType.APPLICATION_JSON)
public String push(MyMessage message){
String comment = message.getComment()
String type = message.getType()
// do something
}
Большое спасибо. Возможно ли использовать несколько аргументов во втором методе, который вы указали? – Dandelion
короткий ответ: nop! Что вы можете сделать: принять объект, содержащий все необходимые вам параметры (включая второй параметр, который вы хотите добавить) ИЛИ принять список объектов, например: Список. Позаботьтесь, вам нужно будет соответствующим образом адаптировать полезную нагрузку JSON. –
LeTex
Спасибо @LeTeX. – Dandelion