控制器弹簧启动中的父子关系

时间:2018-05-23 13:37:35

标签: spring-boot inheritance controller

我想在我的项目中创建多个控制器,Url应该以一个特定的前缀开头,并且在该请求之后应该使用所请求的控制器。

网址赞: -

  1. / API /父
  2. / API /父/子酮
  3. / API /父/子二
  4. / api / parent / child-three
  5. / API /父/子四
  6. 在这里,我希望我的控制器的层次结构就像我点击父控制器应该调用的第一个URL一样,如果我点击第二个URL,那么一个控制器应该调用。

    创建此层次结构的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我建议您使用如下所示的控制器类。

@RestController
@RequestMapping(value = "${spring.data.rest.base-path}/parent")
public class Parent {

    @GetMapping
    public ResponseEntity<Map> parentNode(HttpServletRequest request) {
        Map<String,String> parth=new HashMap<>();
        parth.put("child-one", request.getRequestURL()+"/child-one");
        parth.put("child-two", request.getRequestURL()+"/child-two");
        parth.put("child-three", request.getRequestURL()+"/child-three");
        parth.put("child-four", request.getRequestURL()+"/child-four");
        return ResponseEntity.ok(parth);
    }

    @RequestMapping(value = { "/child-one" }, method = RequestMethod.GET)
    public ResponseEntity<String> childOne() {

        return ResponseEntity.ok("child-one");
    }

    @RequestMapping(value = { "/child-two" }, method = RequestMethod.GET)
    public ResponseEntity<String> childTwo() {
        return ResponseEntity.ok("child-two");
    }

    @RequestMapping(value = { "/child-three" }, method = RequestMethod.GET)
    public ResponseEntity<String> childThree() {
        return ResponseEntity.ok("child-three");
    }

    @RequestMapping(value = { "/child-four" }, method = RequestMethod.GET)
    public ResponseEntity<String> childFour() {
        return ResponseEntity.ok("child-four");
    }
}

Spring-boot application.yml如下所示

server:
  port: 8089
spring:
  data:
    rest:
      base-path: /api/

结果如下

enter image description here