休息ApiPost请求

Rest Api Post request

我似乎无法让它为我工作,我在其他帖子中看到过这个,希望有人能够发现我在做什么 wrong.I 我正在尝试获取请求的主体这个休息 api 但似乎无法拉回我需要的东西,只是在下面的字符串中得到 null。

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

    } 

接受请求正文的方法参数不应带有任何注释(除非在少数情况下,如单独的表单参数和多部分)。因此,要获得原始 JSON,您 可以 只需添加一个字符串参数

public String setFeed(@PathParam("name")String name2, 
                      @QueryParam("name") String name,
                      @Context UriInfo uriInfo,
                      String jsonBody){

或者如果你想做更常见的事情并使用 POJO(这样你就不需要自己解析 JSON),你应该看看

很好的答案,但我想补充一点,您可以使用对象而不是字符串,REST 的 Jackson 将负责转换而无需任何进一步定义。

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

和作为 json 对象的 pojo:

@JsonIgnoreProperties(ignoreUnknown = true)
public class MyJson{

    private String name;

    public MyJson(){}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }