使用REST而不是非REST的HTTP有什么好处?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

REST只是一套关于如何使用HTTP的约定。我想知道这些规定提供了哪些优势?

提问于
用户回答回答于
用户回答回答于

我不认为你会得到一个很好的答案,部分是因为没有人真正搞懂REST是什么。

GET /get_article?id=1
POST /delete_article   id=1

会这样

GET /articles/1/
DELETE /articles/1/

然后POSTPUT对应于“创建”和“更新”操作(但没有人同意采用哪种方式)。

我觉得缓存参数是错误的,因为查询字符串的一般缓存,再说你不是真的需要使用它们。例如django可以使事情变得非常简单,我不会说它是REST:

GET /get_article/1/
POST /delete_article/     id=1

或者甚至只是在URL中包含动词:

GET /read/article/1/
POST /delete/article/1/
POST /update/article/1/
POST /create/article/

在这种情况下GET意味着没有副作用的POST东西,并且意味着改变服务器上的数据。例如:

POST /hide/article/1/
POST /show/article/1/

我可以看到两个优点:

  1. 网络API可能更干净,更易于理解/发现。
  2. 在与网站同步数据时,使用REST更容易,因为可以用synchronize("/articles/1/")。取决于代码。

不过,我认为有一些相当大的缺点:

  1. 并非所有操作都可轻松映射到CRUD(创建,读取/检索,更新,删除)。你甚至可能没有处理对象类型资源。
  2. 围绕PUTPOST用哪种方式很难抉择。

所以最后我会说:除非你真的想要费额外力气,或者如果你的服务真的能很好地映射到CRUD,那么请为你的API的第二个版本保存REST。

扫码关注云+社区