Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring boot控制器中的静态路径链_Java_Spring_Rest_Spring Boot_Jakarta Ee - Fatal编程技术网

Java spring boot控制器中的静态路径链

Java spring boot控制器中的静态路径链,java,spring,rest,spring-boot,jakarta-ee,Java,Spring,Rest,Spring Boot,Jakarta Ee,我用spring boot开发了RESTful后端应用程序。我了解了如何在类中使用注释: @RestController @RequestMapping(path = "/users") public class User{ // rest of code! } @RestController @RequestMapping(path = "/users") public class UserController { @GetMapping("/{user_id}")

我用spring boot开发了RESTful后端应用程序。我了解了如何在类中使用注释:

@RestController
@RequestMapping(path = "/users")
public class User{
    // rest of code!
}
@RestController
@RequestMapping(path = "/users")
public class UserController {

    @GetMapping("/{user_id}")
    public User getUserById(@PathVariable("user_id") String userId) { }

    @GetMapping("/{user_id}/orders")
    public List<Order> getOrdersByUserId(@PathVariable("user_id") String userId) { }

     @GetMapping("/{user_id}/orders/{order_id}")
    public List<Order> getOrdersByIdAndUserId(@PathVariable("user_id") String userId, @PathVariable("order_id") String orderId) { }

    // ... and so on
}
但是每个用户都有订单,任何订单都有物品!所以我设计的rest API如下:

/users /users/{user_id}
/users/{user_id}/orders
/users/{user_id}/orders/{order_id}
/users/{user_id}/orders/{order_id}/items
/users/{user_id}/orders/{order_id}/items/{item_id}
/users/{user_id}/cart

现在,在spring boot中,这种设计的最佳实践或正常实现是什么?如何使用Spring Boot处理API?

继续并在类中使用带注释的方法:

@RestController
@RequestMapping(path = "/users")
public class User{
    // rest of code!
}
@RestController
@RequestMapping(path = "/users")
public class UserController {

    @GetMapping("/{user_id}")
    public User getUserById(@PathVariable("user_id") String userId) { }

    @GetMapping("/{user_id}/orders")
    public List<Order> getOrdersByUserId(@PathVariable("user_id") String userId) { }

     @GetMapping("/{user_id}/orders/{order_id}")
    public List<Order> getOrdersByIdAndUserId(@PathVariable("user_id") String userId, @PathVariable("order_id") String orderId) { }

    // ... and so on
}
@RestController
@请求映射(路径=“/users”)
公共类用户控制器{
@GetMapping(“/{user_id}”)
公共用户getUserById(@PathVariable(“User_id”)字符串userId){}
@GetMapping(“/{user_id}/orders”)
公共列表getOrdersByUserId(@PathVariable(“user_id”)字符串userId){}
@GetMapping(“/{user\u id}/orders/{order\u id}”)
公共列表GetOrdersByAndUserId(@PathVariable(“用户id”)字符串用户id,@PathVariable(“订单id”)字符串orderId){}
//……等等
}
  • 不要忘记
    {}
    括号内的实现
  • 示例方法
    getordersbyanduserid
    映射到path
    /users/{user\u id}/orders/{order\u id}
    GET
    方法,其中
    /users
    是定义为类映射的公共部分,其余部分使用该方法
  • 我建议您将类
    User
    重命名为
    UserController
    ,因为
    User
    是返回实体的合适名称

一个愚蠢的问题:我可以使用订单控制器吗?我知道这是不符合逻辑的,他们有各自的业务,但我的思想是参与其中的。毫无疑问是愚蠢的。这取决于
/users/{user\u id}/orders/{order\u id}
是否返回与
/orders/{order\u id}
相同的值,即
order\u id
是用户订单的编号还是所有订单的编号。一般来说,我不建议从一个控制器调用另一个控制器。