Java spring boot控制器中的静态路径链
我用spring boot开发了RESTful后端应用程序。我了解了如何在类中使用注释: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}")
@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){}
//……等等
}
- 不要忘记
括号内的实现李>{}
- 示例方法
映射到pathgetordersbyanduserid
的/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
是用户订单的编号还是所有订单的编号。一般来说,我不建议从一个控制器调用另一个控制器。