RESTAPI在web应用程序中使用slug的替代设计

RESTAPI在web应用程序中使用slug的替代设计,rest,api-design,Rest,Api Design,我正在创建一个API,但是使用SEO友好的slug而不是ID。我遇到的最多的URL设计总是使用复数形式,如下所示: GET /accounts -> index account GET /accounts/:id -> show account GET /accounts/:id/sites/:id -> nested show site 这对于只有CRUD操作的纯API来说很好,但是如果我这样做: GET /accounts/new GET /accounts/whatev

我正在创建一个API,但是使用SEO友好的slug而不是ID。我遇到的最多的URL设计总是使用复数形式,如下所示:

GET /accounts -> index account
GET /accounts/:id -> show account
GET /accounts/:id/sites/:id -> nested show site
这对于只有CRUD操作的纯API来说很好,但是如果我这样做:

GET /accounts/new
GET /accounts/whatever
然后,这与上面显示的帐户相匹配。一个可能的解决办法是拒绝那些产生“新的”和“任何东西”的账户,但这似乎有点骇人听闻。到目前为止,我所做的只是使用单数,除非后面跟一个slug或ID:

GET /account/new -> new account form
GET /accounts/:id -> show account
但这可能会引起混乱。混合使用复数和单数可能不是最佳选择,但我没有找到一个很好的替代方案,用于支持slug友好的URL,它也支持嵌套资源,如上面的show站点示例


如果不使用前面提到的两种方案中的任何一种,设计一个易于理解的URL方案是否有其他选择?

您的REST API不需要SEO友好的段塞,您的网站可能需要。@Ali My API返回多种格式,包括HTML。您的REST API不需要SEO友好的段塞,您的网站可能会返回多种格式,包括HTML。