REST API是否应该在ID或名称字段上选择?

Bri*_*hek 5 api rest web

我正在设计一个REST API,并尝试确定哪种方法是返回单个资源的更正确方法:

/resource/{id}
Run Code Online (Sandbox Code Playgroud)

要么

/resource/{name}
Run Code Online (Sandbox Code Playgroud)

该ID是不可变的,因此我认为最好通过它进行选择,但是名称看起来更友好。最佳做法是什么?我看过这两种用法都在“野外使用”之前。

Opa*_*pal 6

基本上,REST是建立在唯一ID之上的,因此:

GET    /resources/{id}/
Run Code Online (Sandbox Code Playgroud)

应该使用。但是,没有什么可以阻止您使name字段成为唯一字段(现在它的行为就像普通的旧ID)并在此唯一ID之上构建REST。

如果这不是您所需要的并且name不能使其唯一,那么另一种选择是通过name以下方式实现过滤:

GET    /resources?name=<SOME_NAME>
Run Code Online (Sandbox Code Playgroud)

它也应该是resources(复数),因为它表明引擎盖下有一个收藏夹。