RESTful API for POST 当其他 HTTP 动词的路径有多个参数时?
RESTful API for POST when other HTTP Verbs' paths have multiple Params?
你好,一月快乐!
回顾我最近创建的一个非常简单的 RESTful API,我想知道我是否为其 POST 做了 RESTful API 签名。
这个RESTfulAPI查询一个非常简单的MongoDB集合Apps
,它的列是:
_id
, (appId
)
siteId
(必填)
accountId
(必填)
provider
(必填)
description
索引:
provider
, siteId
, accountId
: unique
数据结构:
- 每个站点 (
siteId
) 有多个帐户 (accountId
)。
- 每个帐户 (
accountId
) 有多个应用程序 (appId
)。
HTTP 动词 GET
DELETE
和 PATCH
处理集合 Apps
中的项目的路径是:
GET /api/v1/sites/:siteId/accounts/:accountId/apps
DELETE /api/v1/sites/:siteId/accounts/:accountId/apps
PATCH /api/v1/sites/:siteId/accounts/:accountId/apps
我的困惑如下:我想 POST
一个将与 siteId
+ accountId
相关联的新应用程序。
我想知道我如何定义此 POST
路径是否有意义,因为新应用程序可能是第一次 siteId
或 accountId
添加到此集合中。
这是我为 HTTP 动词实现的 POST
:
POST /api/v1/sites/:siteId/accounts/:accountId/apps
params: {
siteId: string,
accountId: string,
},
body: {
provider: '[** Provider **]',
description: '[** Description **]',
siteId: '[** Site ID **]',
accountId: '[** Account ID **]'
},
response: new `appId`
或者应该是(我开始倾向于):
POST /api/v1/apps
body: {
provider: '[** Provider **]',
description: '[** Description **]',
siteId: '[** Site ID **]',
accountId: '[** Account ID **]'
},
response: new `appId`
真心欢迎推荐!
首先,在 url 和正文中同时包含 siteId 和 accountId 会有点奇怪。 url 表明您正在为特定站点创建应用程序,然后该站点是消息正文中的一个变量,这意味着它可以是任何站点。这只会导致混乱。
您是否希望有人能够为任何 site/account 组合注册新应用?或者有人会从选择站点到为该站点注册新应用程序。在第一种情况下,我会把它全部放在正文中,在第二种情况下,我会把网站放在 url 中。
考虑 RESTfulness;当您在将应用程序注册到特定站点之前使用 api 查找站点或特定站点时,响应中的 'site' 对象将引用为该站点注册应用程序的位置.此 link 可能包含站点 ID。但是,如果它只是一个 url,您可以在其中注册任何站点,则 siteId 将不会出现在 url 中,甚至不会成为该特定响应的一部分。
我想我会考虑 url 无论如何,这似乎是它总是相同的,只是你必须作为变量传递的东西。
你好,一月快乐!
回顾我最近创建的一个非常简单的 RESTful API,我想知道我是否为其 POST 做了 RESTful API 签名。
这个RESTfulAPI查询一个非常简单的MongoDB集合Apps
,它的列是:
_id
, (appId
)siteId
(必填)accountId
(必填)provider
(必填)description
索引:
provider
,siteId
,accountId
:unique
数据结构:
- 每个站点 (
siteId
) 有多个帐户 (accountId
)。 - 每个帐户 (
accountId
) 有多个应用程序 (appId
)。
HTTP 动词 GET
DELETE
和 PATCH
处理集合 Apps
中的项目的路径是:
GET /api/v1/sites/:siteId/accounts/:accountId/apps
DELETE /api/v1/sites/:siteId/accounts/:accountId/apps
PATCH /api/v1/sites/:siteId/accounts/:accountId/apps
我的困惑如下:我想 POST
一个将与 siteId
+ accountId
相关联的新应用程序。
我想知道我如何定义此 POST
路径是否有意义,因为新应用程序可能是第一次 siteId
或 accountId
添加到此集合中。
这是我为 HTTP 动词实现的 POST
:
POST /api/v1/sites/:siteId/accounts/:accountId/apps
params: {
siteId: string,
accountId: string,
},
body: {
provider: '[** Provider **]',
description: '[** Description **]',
siteId: '[** Site ID **]',
accountId: '[** Account ID **]'
},
response: new `appId`
或者应该是(我开始倾向于):
POST /api/v1/apps
body: {
provider: '[** Provider **]',
description: '[** Description **]',
siteId: '[** Site ID **]',
accountId: '[** Account ID **]'
},
response: new `appId`
真心欢迎推荐!
首先,在 url 和正文中同时包含 siteId 和 accountId 会有点奇怪。 url 表明您正在为特定站点创建应用程序,然后该站点是消息正文中的一个变量,这意味着它可以是任何站点。这只会导致混乱。
您是否希望有人能够为任何 site/account 组合注册新应用?或者有人会从选择站点到为该站点注册新应用程序。在第一种情况下,我会把它全部放在正文中,在第二种情况下,我会把网站放在 url 中。
考虑 RESTfulness;当您在将应用程序注册到特定站点之前使用 api 查找站点或特定站点时,响应中的 'site' 对象将引用为该站点注册应用程序的位置.此 link 可能包含站点 ID。但是,如果它只是一个 url,您可以在其中注册任何站点,则 siteId 将不会出现在 url 中,甚至不会成为该特定响应的一部分。
我想我会考虑 url 无论如何,这似乎是它总是相同的,只是你必须作为变量传递的东西。