接收"请求实体不能为空"来自paramaterized RESTful GET操作

时间:2016-09-06 02:25:38

标签: java rest

Java编程新手,还在学习。我已经构建了一个RESTful服务,并且我试图为GET例程传递一个参数,并且我回到状态400,表示" Request实体不能为空&#34 ;。当我调用非参数化的GET时,数据恢复正常。我已经删除了参数化GET的所有功能,只返回一个简单的字符串,我仍然得到相同的消息。搜索到所有内容,无法找到任何非常有用的内容。

以下是我为该服务运行的代码。方法" GetChildAllInfo"调用本地mySQL实例并返回一个对象列表;一个工作得很好。参数化的不会返回任何内容,甚至不会返回异常。

非常感谢任何帮助。即使它是一个荒谬简单的解决方案,如语法错误,我可能已经错过了。而且我也愿意接受关于你在代码中看到的任何其他建议。谢谢!

    package allowanceManagerChild;

    import java.util.Set;
    import javax.ws.rs.core.Context;
    import javax.ws.rs.core.UriInfo;
    import javax.ws.rs.Produces;
    import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PUT;
    import javax.ws.rs.core.MediaType;
    import com.google.gson.Gson;

    @Path("allowanceManagerChild")
    public class AllowanceManagerChild {

        @Context
        private UriInfo context;

        /**
         * Creates a new instance of AllowanceManagerChild
         */
        public AllowanceManagerChild() {
        }

        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public String getJson() {

            String response = "";
            Set<Child> children = Child.GetAllChildInfo();
            for (Child child : children){
                Gson gson = new Gson();
                String json = gson.toJson(child);
                response = response + json;
            }
            return response;
        }

        @GET
        @Path("/{childID}")
        @Produces(MediaType.APPLICATION_JSON)
        public String getJson(int childID) {
            String response = "";
            try{
    //        Set<Child> children = Child.GetChildInfo(id);
    //        for (Child child : children){
    //            Gson gson = new Gson();
    //            String json = gson.toJson(child);
    //            response = response + json;
    //        }
                response = "Made it here"; //Integer.toString(childID);
            }
            catch(Exception e){
                response = e.toString();
            }
            return response;
        }

        /**
         * PUT method for updating or creating an instance of AllowanceManagerChild
         * @param content representation for the resource
         */
        @PUT
        @Consumes(MediaType.APPLICATION_JSON)
        public void putJson(String content) {
        }
    }

1 个答案:

答案 0 :(得分:1)

@PathParam注释添加到method参数可能会有所帮助:

@GET
@Path("/{childID}")
@Produces(MediaType.APPLICATION_JSON)
public String getJson(@PathParam("childID") int childID) {

有关详细信息,请参阅RESTful Web Services Developer's Guide