java Sping Boot 中的REST API url和参数命名?

pinkon5k  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(126)

对于Sping Boot 项目,我看到了一些不同的用法,并希望澄清以下几点。

**1-**据我所知,以下url中kebab-case的用法比camelCase好,是真的吗?

@RequestMapping("/api/v1/fraud-check")

**2-**另一方面,如果我们使用参数,那么我认为在url中使用camelCase更好,如下图所示(注意,我只对参数使用camelCase,其余的(security-check)是kebab-case)。这是正确的用法吗?

@GetMapping("/security-check/{customerId}/{jobId}")
public ResponseEntity<List<Customer>> getCustomerByDepartmentIdAndJobId(
                                          @PathVariable int customerId,
                                          @PathVariable int jobId
) {

}

另一方面,在某些情况下,两个参数都是相同的类型,例如getById()getByReferenceNumber()。在这种情况下,不能使用以下urlMap:

@GetMapping("/{userId}")

@GetMapping("/{referenceId}")

在这种情况下,向reference添加一个额外的参数('references')是否是一个好的做法,如下所示:

@GetMapping("/references/{referenceId}")

你有什么建议?

gudnpqoy

gudnpqoy1#

你关于 shell 的观点是完全正确的,它与API的一般编写方式很好地结合起来。
我们有一篇很棒的文章,可以帮助你开始了解REST api的最佳实践:https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/
最后,关于端点的最终用例:

@GetMapping("/references/{referenceId}")

这是非常主观的,取决于你的用例。例如,添加“引用”也取决于你的类级别的requestmapping字符串,它说明了控制器类的域。
假设我有专门为参考编写的Controller,我可以这样做:

@RequestMapping("/api/v1/reference")
@Controller
class ReferenceController {

@GetMapping("/{id}")
... getReferenceById (@PathVariable int id) {}
}

希望这能澄清这一点并有所帮助。谢谢。

相关问题