为什么人们将 CRUD 应用程序转换为 REST API?
Why do people convert CRUD app into a REST API?
我是一名初级 Rails 开发人员,我正在尝试了解 CRUD 网络应用程序和 REST API 之间的 pros/cons。
我知道如何将 Rails 博客变成 API,但我不明白这样做有什么好处。
我能看到的主要区别是我的 url 阅读博客来自于此
localhost:3000/blog/1
至此
localhost:3000/api/v1/blog/1
如果我想创建一个博客,url 就是从这里开始的
localhost:3000/blog/new
至此
localhost:3000/api/v1/blog
我使 API 的视图和博客控制器看起来完全一样。
所以最终结果是阅读博客或创建博客具有完全相同的用户体验。
我觉得我对 REST API 的理解有些地方并不真正了解。
谁能描述一个假设情况,即博客 API 比 CRUD 博客更好?
I feel like there is something I am not truly understanding about REST API's.
那不是你的错;对 REST API 存在 很多 的误解。 Rails 社区在 2005 年左右尤其感到困惑,我不知道它曾经被理顺过。
localhost:3000/blog/1
localhost:3000/api/v1/blog/1
这只是拼写约定的改变。 REST 不关心您对 URI 使用什么拼写约定,但如果您使用框架(如 Rails)将 HTTP 请求路由到适当的实现,那么您希望选择使路由更容易的拼写( “约定优于配置”)。
localhost:3000/blog/new
localhost:3000/api/v1/blog
此更改更好地使“创建”请求与网络的缓存语义保持一致。通常情况下,向博客添加新条目也会更改博客资源本身(例如,新条目列在索引中)。因此,在成功创建后,您希望客户端停止使用索引的旧副本并获取新副本。
HTTP 的缓存失效规则描述了在成功的不安全请求后目标资源的失效,因此:
POST /api/v1/blog
指示客户端使其先前缓存的 /api/v1/blog 副本无效(如果响应不是错误)。这很好,因为 /api/v1/blog 表示已通过添加新博客 post 进行了更改。
POST /blog/new
具有完全相同的语义(因为“统一接口”——所有资源都以相同的方式理解相同的消息)。这意味着非错误响应通知通用客户端 /blog/new 表示应该无效。
这可能 没有 有用,因为它是 /blog,而不是 /blog/new,当我们向博客添加新条目时,它已更改。
一般来说:target-uri 不识别操作的处理程序,它识别我们试图更改的文档(资源是文档的概括)。这使我们能够利用网络中内置的缓存魔法。
我是一名初级 Rails 开发人员,我正在尝试了解 CRUD 网络应用程序和 REST API 之间的 pros/cons。
我知道如何将 Rails 博客变成 API,但我不明白这样做有什么好处。
我能看到的主要区别是我的 url 阅读博客来自于此
localhost:3000/blog/1
至此
localhost:3000/api/v1/blog/1
如果我想创建一个博客,url 就是从这里开始的
localhost:3000/blog/new
至此
localhost:3000/api/v1/blog
我使 API 的视图和博客控制器看起来完全一样。 所以最终结果是阅读博客或创建博客具有完全相同的用户体验。
我觉得我对 REST API 的理解有些地方并不真正了解。
谁能描述一个假设情况,即博客 API 比 CRUD 博客更好?
I feel like there is something I am not truly understanding about REST API's.
那不是你的错;对 REST API 存在 很多 的误解。 Rails 社区在 2005 年左右尤其感到困惑,我不知道它曾经被理顺过。
localhost:3000/blog/1
localhost:3000/api/v1/blog/1
这只是拼写约定的改变。 REST 不关心您对 URI 使用什么拼写约定,但如果您使用框架(如 Rails)将 HTTP 请求路由到适当的实现,那么您希望选择使路由更容易的拼写( “约定优于配置”)。
localhost:3000/blog/new
localhost:3000/api/v1/blog
此更改更好地使“创建”请求与网络的缓存语义保持一致。通常情况下,向博客添加新条目也会更改博客资源本身(例如,新条目列在索引中)。因此,在成功创建后,您希望客户端停止使用索引的旧副本并获取新副本。
HTTP 的缓存失效规则描述了在成功的不安全请求后目标资源的失效,因此:
POST /api/v1/blog
指示客户端使其先前缓存的 /api/v1/blog 副本无效(如果响应不是错误)。这很好,因为 /api/v1/blog 表示已通过添加新博客 post 进行了更改。
POST /blog/new
具有完全相同的语义(因为“统一接口”——所有资源都以相同的方式理解相同的消息)。这意味着非错误响应通知通用客户端 /blog/new 表示应该无效。
这可能 没有 有用,因为它是 /blog,而不是 /blog/new,当我们向博客添加新条目时,它已更改。
一般来说:target-uri 不识别操作的处理程序,它识别我们试图更改的文档(资源是文档的概括)。这使我们能够利用网络中内置的缓存魔法。