RESTful API的根资源应该有什么?

RESTful API的根资源应该有什么?,rest,restful-architecture,Rest,Restful Architecture,向API请求“/cats”将返回cats集合,而请求“/cats/123”将返回id为“123”的cat 我的问题是:当请求“/”(API的根)时,响应应该是什么 一个包含API中所有集合名称的索引可能?这个索引可能没有客观的答案,但是一个很酷的API应该是可浏览的。这意味着,给定一个起始URI,应该可以“发现”完整的API,因此拥有一个链接到API所有不同部分的根资源肯定会有所帮助 即使所有的服务都是独立的应用程序(想想微服务),我仍然会创建一个服务来拥有指向所有服务的“开始”链接,从而在整个

向API请求“/cats”将返回cats集合,而请求“/cats/123”将返回id为“123”的cat

我的问题是:当请求“/”(API的根)时,响应应该是什么


一个包含API中所有集合名称的索引可能?

这个索引可能没有客观的答案,但是一个很酷的API应该是可浏览的。这意味着,给定一个起始URI,应该可以“发现”完整的API,因此拥有一个链接到API所有不同部分的根资源肯定会有所帮助

即使所有的服务都是独立的应用程序(想想微服务),我仍然会创建一个服务来拥有指向所有服务的“开始”链接,从而在整个应用程序中真正拥有一个入口点


我的意思是,不仅仅是人类可以浏览,客户机也可以从第一个URI开始。总是这样,除非在以前的状态下使用书签(并且在给定重定向或未找到时需要维护这些书签)。

我不知道是否对此有一套约定。这取决于您想要提供什么,以及您的安全问题是什么。您可以考虑在REST API中返回有效对象的列表。或者,如果你不想把信息透露给任何人,考虑返回204或404。

如果你想要一个开发人员友好的消息,那么我建议使用内置或第三方文档工具来生成可以从外部访问锁定的文档。api根目录应该返回404,因为那里没有任何内容,对吗?有一个RFC草案建议REST api使用“主文档”格式:。