【问题标题】:REST API- Defining proper and intuitive URIREST API - 定义正确和直观的 URI
【发布时间】:2015-01-08 16:49:00
【问题描述】:

我正在尝试创建一个小注册应用程序,它将作为 REST API 发布。它将允许用户/系统在我的系统上创建一个帐户。他们将传入用户名和密码。 根据我阅读的规则,URI中的“/”必须用于表示层次关系。

所以我想知道这种类型的 URI 是否符合规则,是否足够直观:

 POST http://myregistrations.com/users/user/{user_id},{password}
 GET http://myregistrations.com/users/user/{user_id}
 PUT http://myregistrations.com/users/user/{user_id},{password}
 DELETE  http://myregistrations.com/users/user/{user_id}

或者我应该从 URI 中删除“用户”部分吗?在这种情况下,如果我想获得“所有”用户,我可以执行以下操作:

 GET http://myregistrations.com/user/
 DELETE http://myregistrations.com/user/  ** i might not allow this but just for discussion purposes...

其余的方法看起来像这样:

 POST http://myregistrations.com/user/{user_id},{password}
 GET http://myregistrations.com/user/{user_id}
 PUT http://myregistrations.com/user/{user_id},{password}
 DELETE  http://myregistrations.com/user/{user_id}

我不想让事情变得过于复杂......但我也想确保我遵守约定。 我倾向于第二个例子,我没有“用户”。鉴于 URI 的每个部分都应该映射到一个可寻址资源,并且我不会允许对帐户进行批量更新,因此此时拥有“用户”的概念似乎毫无用处。不过我可能会遗漏一些东西。

也许我只是在分裂头发。我也在这里阅读了有关定义 REST API 的其他帖子……但我还没有找到任何东西。

谢谢。

【问题讨论】:

  • 我当然不会同时使用userusers。如果是我,我会使用user 来表示那些获得user-id 的人,并使用users 作为列表。

标签: rest http


【解决方案1】:

您可以通过一个 API 拥有两个概念(用户和用户)。 URI /users/user 对我来说似乎很复杂。

过度简化的例子:

发布一位用户:

POST /user/{user_id,password}

发布多个用户:

POST /user/[{user_id,password},{user_id,password}]

获得一个用户:

GET /user/{user_id}
Response: {user_name} or [{user_name}]

获取多个用户:

GET /user/{search_user_name}
Response: [{user_name},{user_name},{user_name}]

【讨论】:

    【解决方案2】:

    通常复数是您引用资源的方式,因此在这种情况下users 而不是user。这就是遵循 REST 模式的路线应该看起来的样子。

     POST http://myregistrations.com/users/  --> The post payload should contain: {user_id},{password}
     GET http://myregistrations.com/users/{user_id}  --> The user_id is in the URL
     PUT http://myregistrations.com/users/{user_id}  --> The user_id is in the URL
     DELETE  http://myregistrations.com/users/{user_id} --> The user_id is in the url
    

    【讨论】:

      【解决方案3】:

      我不想让事情过于复杂......

      我有个坏消息要告诉你,你已经把事情复杂化了。 REST 客户端对 URI 结构一无所知,因为它们遵循带有语义元数据注释的超链接。客户端检查此元数据而不是 URI 结构。

      【讨论】:

        猜你喜欢
        • 2021-05-18
        • 2012-01-07
        • 2012-07-05
        • 1970-01-01
        • 1970-01-01
        • 2016-03-29
        • 2011-04-09
        • 1970-01-01
        • 2020-08-27
        相关资源
        最近更新 更多