REST API - 端点语法 - 按属性获取项目 - 而不是按 id

标签 rest restapi

我正在实现我的第一个 REST API,我对 URL 端点的语法有疑问。

我知道我应该使用这些端点来获取、创建、更新和删除:

  • 获取元素 list
    方法:GET , 网址:/api/items
  • 通过 id 获取项目
    方法:GET , 网址:/api/items/:id
  • 添加项目(请求正文中的新项目数据)
    方法:POST , 网址:/api/items
  • Modify item(修改请求体中的item数据)
    方法: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/

    相关文章:

    java - 带有语言和区域的 REST API 请求

    javascript - 添加代码智能到nodejs中的rest api链接

    rest - 为什么许多 Web API 中既有 key 又有 secret ?

    请求资源子集的 RESTful 方式

    rest - 当您需要使用 REST api 的动词时,最好做什么?

    python - Django REST 框架 : creating hierarchical objects using URL arguments

    javascript - JQuery、Javascript、AJAX POST json 到 Rest api

    java - 当我尝试将我的应用程序连接到网络服务时失败

    rest - 不同的资源表示(REST API)

    REST - 不应该 PUT = 创建和 POST = 更新