我有2个端点,如下所示,但我不能像这样使用端点URL:
@GetMapping("/{email}")
public ResponseEntity<Void> findByEmail(@PathVariable String email) {
}
@GetMapping("/{id}")
public ResponseEntity<Void> findById(@PathVariable long id) {
}
我应该使用类似@GetMapping("mail/{email}")
的东西吗?
2条答案
按热度按时间rslzwgfq1#
是的,为每个端点使用不同的路径是避免冲突的好方法。您可以为每个端点使用具有唯一路径的@GetMapping注解,例如@GetMapping(“/email/{email}”)用于findByEmail方法,@GetMapping(“/id/{id}”)用于findById方法。
因此,当请求作为URL /{email}或/{id}传入时,Spring框架可以根据不同的路径值区分这两个端点。
lsmepo6l2#
例如,如果您要通过电子邮件或ID检索用户,则可以使用以下资源名称:
**/users/{id}通过ID检索用户/users?email={email}**通过电子邮件检索用户这种方法使资源名称更具描述性,更容易理解。此外,它遵循使用名词(在本例中为“users”)命名资源的REST风格约定。
因此,您可以使用
@GetMapping("/users/{id}")
和@GetMapping("/users")
,并为相应的端点提供一个类似?email={email}
的查询参数,以分别通过ID和电子邮件检索用户。或者,您可以使用
@GetMapping("/users/id/{id}")
和@GetMapping("/users/email/{email}")
来区分端点。