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 结构。
我正在尝试创建一个小的注册应用程序,它将作为 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 结构。