我正在使用Spring Boot设计API。

我将在spring-boot中实现以下API设计。


本地主机:8989 //父级。
本地主机:8989 //父母/父母
本地主机:8989 ///父母/父母/孩子


继控制器之后,我已经实现了。

@RestController
@RequestMapping(
 path="/parent",
 consumes=MediaType.APPLICATION_JSON_VALUE,
 produces=MediaType.APPLICATION_JSON_VALUE)
 public class ParentController {
         @RequestMapping(method=RequestMethod.GET)
         public @ResponseBody ResponseObject getAllParent() {
            //code to return all parent
         }
         @RequestMapping(method=RequestMethod.GET, path="{id}")
         public @ResponseBody ResponseObject getParent(@PathVariable("id")
                                               Integer parentid) {
              //code to return specific parent
         }
         @RequestMapping(method=RequestMethod.GET, path="{id}/child")
         public @ResponseBody ResponseObject getParentChild
                                    (@PathVariable("id")Integer parentid) {
              //code to return specific parent
         }
  }


我在这里要求以下要求。


本地主机:8989 //父->工作正常
本地主机:8989 ///父母/父母->工作正常
本地主机:8989 /// parent / parentid / child->无法正常工作。低于错误。

{
    “ timestamp”:“ 2018-09-09T09:44:05.922 + 0000”,
    “状态”:500,
    “错误”:“内部服务器错误”,
    “ message”:“缺少Integer类型的方法参数的URI模板变量'parentid'”,
    “路径”:“ / parent / 1536485852 / child /”
}


有什么帮助吗?

最佳答案

请改变这种方法;

 @RequestMapping(method=RequestMethod.GET, value = "{id}/child")
         public @ResponseBody ResponseObject getParentChild
                                    (@PathVariable("id")Integer parentid) {
              //code to return specific parent
         }


此处path="{id}/child"是错误的。在此添加斜杠。所以这会是这样;

value="/{id}/child"


如果您不在此处添加斜杠,它将连接两个路径。因此,这个"parent"之一是"{id}/child"。因此,未知。将两者连接在一起,结果将类似于"parentid/child"。在您的例外中,找不到parentid。您的路径网址不符合您的要求。不久在这里添加斜杠。

09-11 04:08