代码之家  ›  专栏  ›  技术社区  ›  en Peris

REST资源命名和@pathvariable注释

  •  1
  • en Peris  · 技术社区  · 6 年前

    我正在读一本关于剩余资源命名的教程…

    http://api.example.com/device-management/managed-devices/{id}/scripts/{id}:clone
    

    这是一个命名的最佳实践示例,但我不知道如何使用 @PathVariable 注释和区分 {id} {id}:clone

    public ResponseEntity<?> clone (
    HttpServletRequest request, 
    @PathVariable long id, ...) {
    ..
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Dherik Pascal Sancho    6 年前

    您需要通过变量名或属性来区分这两个ID value @PathVariable ,比如:

    @GetMapping("http://api.example.com/device-management/managed-devices/{idManagedDevice}/scripts/{idScript}"
    public ResponseEntity<?> clone (HttpServletRequest request, 
        @PathVariable long idManagedDevice,
        @PathVariable long idScript,
    ) {
    ..
    }
    

    或:

    @GetMapping("http://api.example.com/device-management/managed-devices/{id}/scripts/{idScript}"
    public ResponseEntity<?> clone (HttpServletRequest request, 
        @PathVariable(value="id") long idOfManagedDevice,
        @PathVariable(value="idScript") long idOfScript,
    ) {
    ..
    }