对于Spring Boot项目,我看到了一些不同的用法,我想澄清以下几点。
1 -据我所知,以下使用kebab-case的url比camelCase更好。这是真的吗?
@RequestMapping("/api/v1/fraud-check")
2 -另一方面,如果我们使用参数,那么我认为最好在url中使用camelCase,如下所示(注意,我只对参数使用camelCase,其余的(security-check
)是kebar -case)。这是一个正确的用法吗?
@GetMapping("/security-check/{customerId}/{jobId}")
public ResponseEntity<List<Customer>> getCustomerByDepartmentIdAndJobId(
@PathVariable int customerId,
@PathVariable int jobId
) {
}
另一方面,在某些情况下,两个参数都是相同的类型,例如getById()
和getByReferenceNumber()
。在这种情况下,不能使用以下url映射:
@GetMapping("/{userId}")
和
@GetMapping("/{referenceId}")
在这种情况下,添加一个额外的形参('references')来引用一个形参是不是一个好的做法,如下所示:
@GetMapping("/references/{referenceId}")
你有什么建议吗?
你关于大小写的观点是完全有效的,它与api的一般编写方式很好。
我们有一篇很棒的文章,将帮助您开始了解REST api的最佳实践:https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/
关于端点的最终用例的最后:
@GetMapping("/references/{referenceId}")
这是非常主观的,将取决于您的用例。例如,添加"引用"还将取决于你的类级requestmapping字符串,该字符串表示控制器类的域。
假设我有一个专门为参考编写的控制器,我可以这样做:
@RequestMapping("/api/v1/reference")
@Controller
class ReferenceController {
@GetMapping("/{id}")
... getReferenceById (@PathVariable int id) {}
}
希望这一点澄清和帮助。谢谢。