Rest Api Почтовый запрос
Я не могу заставить это работать для меня, я видел это в других сообщениях и надеялся, что кто-то сможет определить, что я делаю неправильно. Я пытаюсь получить тело запроса на этот отдых api, но похоже, не может отбросить то, что мне нужно, и просто получить нуль в строке ниже.
@POST
@Path("/SetFeeds")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String setFeed(@PathParam("name")String name2, @QueryParam("name") String name,@Context UriInfo uriInfo){
MultivaluedMap<String,String> queryParams = uriInfo.getQueryParameters();
String query = uriInfo.getRequestUri().getQuery();
String response = queryParams.getFirst("name");
return response;
}
Ответы
Ответ 1
Параметр метода для принятия тела запроса не должен быть аннотирован ничем (кроме нескольких случаев, таких как индивидуальные параметры формы и multipart). Итак, чтобы получить исходный JSON, вы можете просто добавить параметр String
public String setFeed(@PathParam("name")String name2,
@QueryParam("name") String name,
@Context UriInfo uriInfo,
String jsonBody){
Или, если вы хотите сделать более обычную вещь и использовать POJO (так что вам не нужно самостоятельно разбирать JSON), вы должны посмотреть этот ответ
Ответ 2
Отличный ответ, но я хотел бы добавить, что вы можете использовать объект вместо String, а Jackson of REST позаботится о преобразовании без какого-либо дальнейшего определения.
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String setFeed(@PathParam("name")String name2,
@QueryParam("name") String name,
MyJson json,
@Context UriInfo uriInfo){
MultivaluedMap<String,String> queryParams = uriInfo.getQueryParameters();
String query = uriInfo.getRequestUri().getQuery();
String response = queryParams.getFirst("name");
return response;
и pojo как объект json:
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyJson{
private String name;
public MyJson(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}