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;
    }