休息最佳实践:我应该遵循什么标准?

Rest best practices: what standard should I follow?

我在 post 这个问题之前阅读了以下书籍和链接,并且由于这个问题是关于最佳实践的,所以这个问题可能会被关闭。不过我期待一些专家的意见。

https://www.restapitutorial.com/resources.html 来自 oreily 的 REST-API-Design-Rulebook 其他博客post 和 Whosebug 问题。

例如,要获取 ID 为员工的信息,我们使用 uri,如下所示

http://myapp-name.myorganization.com/employees/employeeid/123456

但以上所有资源都告诉我这样做

http://myapp-name.myorganization.com/employees/123456

同样,如果我想获取有关 ID 为 12345 的员工的信息,我的 uri 如下

http://myapp-name.myorganization.com/countries/country/US/employeeid/12345

相对于

http://myapp-name.myorganization.com/countries/US/12345

这是否意味着我的 uri 不标准?

它们只是指南。您无法在一份 Rest 文档中涵盖您的业务和必需品的所有可能性。

谈到你的例子,

http://myapp-name.myorganization.com/employees/employeeid/123456

http://myapp-name.myorganization.com/employees/123456

都正确。但可能会更好(更短)。

通常我更喜欢第二个并且使用第一个作为备选方案。例如,如果我想通过 id("default" 方法来查找员工)或他唯一的公司内部代码来查找员工,我更愿意分别使用:

/employees/123456         # by id
/employees/code/A899123A  # by code

Similarly if i want go get information about employee with id 12345, my uri is as below http://myapp-name.myorganization.com/countries/country/US/employeeid/12345

这 URL 对我来说意味着你试图在美国国家/地区找到 ID 为 12345 的员工。但如果 US 项是在 API:

上查找国家/地区的默认方法,也可能更短
 /countries/US/employees/12345

as opposed to http://myapp-name.myorganization.com/countries/US/12345

这个看起来很混乱。您是否要查找 ID 为 12345 的内容?仅查找 URL 很难回答。所以,/countries/US/employees/12345 更一致。

如果想法是使用某些代码在某个国家/地区找到员工,URL 可以遵循相同的模式:/countries/US/employees/code/A899123A

Does that my uri are not standard?

不,您的 URI 没问题。 REST 不关心您使用什么拼写来表示您的标识符,只要它们与描述“最佳实践”的 RFC 3986. There's also RFC 7320 一致——但您可能会发现那些最佳实践仍然会给您留下很多自由。

想想“变量名”——不同的社区对于变量名的拼写有自己的约定,但没有任何标准。

REST 中的标识符也是如此——它们是不透明的字符串,API 消费者和客户端实际上都不需要解析。 (示例:您最后一次实际查看在向 Google 提交搜索时使用的 URI 是什么时候?)

如果您遵守特定约定,某些路由框架会更易于使用,但这纯粹是服务器上的实现细节,客户端并不关心。