我正在实现我的第一个 REST API,我对 URL 端点的语法有疑问。
我知道我应该使用这些端点来获取、创建、更新和删除:
方法:
GET
, 网址:/api/items
方法:
GET
, 网址:/api/items/:id
方法:
POST
, 网址:/api/items
方法:
PUT
, 网址:/api/items/:id
方法:
DELETE
, 网址:/api/items/:id
但是可以说 item 的界面是
interface item
{
id: string;
name: string;
}
通过名称获取项目的请求 url 应该是什么?
我无法使用方法:
GET
, 网址:/api/items/:name
,因为这将匹配 get-by-id 请求。那么我应该如何编写这个端点的语法?
最佳答案
除非您正在执行 OData,否则没有标准的 REST URI 语法。您可以完全自由地设计自己的 URI,甚至 /resource/{id}
是完全有效的。
我喜欢做的是用 /
结束集合的 URI。并使用查询来过滤集合。所以我会做 /api/{version}/items/?name={name}
如果它们有唯一的名称,并且您希望是一个项目而不是一个集合,那么我会这样做:/api/{version}/items/name:{name}
.但这是我的风格。
从客户端的角度来看,URI 语法完全无关紧要,因为服务器根据 HATEOES 约束将有效的 URI 模板提供给客户端。如果您不这么认为,那么您可能正在构建 CRUD API 而不是 REST API。
关于REST API - 端点语法 - 按属性获取项目 - 而不是按 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57339455/