REST API - 定义正确且直观的 URI

REST API- Defining proper and intuitive URI

我正在尝试创建一个小的注册应用程序,它将作为 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 中删除 "users" 部分吗?在这种情况下,如果我想获得 "all" 个用户,我可以执行以下操作:

 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}

我不想让事情过于复杂...但我也想确保我遵循惯例。 我倾向于第二个例子,我没有 "users"。考虑到 URI 的每个部分都应该映射到一个可寻址的资源,并且我不允许批量更新帐户,此时 "users" 的概念似乎没有用。不过我可能遗漏了一些东西。

也许我只是吹毛求疵。我也一直在这里阅读其他关于定义 REST APIs 的帖子......但我还没有找到任何东西。

谢谢。

通常复数是您引用资源的方式,因此在这种情况下 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

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

过度简化的示例:

Post 一位用户:

POST /user/{user_id,password}

Post 多个用户:

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}]

I don't want to over complicate things...

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