Php 为什么每次我搜索有关REST的信息时,几乎总是看到与API的关系?

Php 为什么每次我搜索有关REST的信息时,几乎总是看到与API的关系?,php,rest,Php,Rest,我从未使用或尝试过任何ReST应用程序,但它似乎使用了正确的HTTP请求来完成正确的事情,而不是使用POST和GET的用法 因此,如果我希望创建一个web应用程序,并希望进行一些CRUD操作,我假设对于几乎所有的操作,我将有: POST for create. GET for read. PUT for update. DELETE for delete. 为什么我们在这个体系结构(ReST)和API开发之间看到了这么多清晰的关系,而在使用给定PHP框架开发的普通MVC应用

我从未使用或尝试过任何ReST应用程序,但它似乎使用了正确的HTTP请求来完成正确的事情,而不是使用
POST
GET
的用法

因此,如果我希望创建一个web应用程序,并希望进行一些CRUD操作,我假设对于几乎所有的操作,我将有:

 POST for create. 

 GET for read. 

 PUT for update. 

 DELETE for delete.
为什么我们在这个体系结构(ReST)和API开发之间看到了这么多清晰的关系,而在使用给定PHP框架开发的普通MVC应用程序上却看不到


有人能稍微澄清一下这些关联的原因吗?

MVC应用程序是针对人类用户的。API是针对机器用户的

在指导人类完成任务方面,任何有意义的东西都可能在机器界面中显得臃肿(或者可能不是,因为机器界面的普通人类用户是开发人员)。

对于“MVC应用程序”,我明确地假设你指的是网站,尽管是“MVC应用程序”当然也可能是完全不同的东西。一个网站是REST,但它可能在某些网站上提供糟糕的界面。由于浏览器往往不支持本地的
,因此明显不支持PUT&DELETE。如果浏览器建设者愿意,他们可以支持这一点

引用维基百科:

万维网代表了符合REST体系结构风格的系统的最大实现

循环

  • 客户机-服务器:Web服务器和浏览器,我们有它们
  • 无状态:是的,对URL的请求通常不关心客户机状态(我们必须保持活动状态以保持速度,但本质上一切都是一个新请求)。由于服务器会话,需要指出一些事项:“会话状态保存在客户端”(即您的身份验证信息或令牌,以及您希望记住的有关您访问的站点的任何其他信息)&“需要注意的重要一点是,服务器可以将会话状态传输到另一个服务(如数据库),以在一段时间内保持持久状态并允许身份验证。”=>服务器上有更多数据的会话cookie可以休息
  • 可缓存:是的,大多数身份(网页)可以缓存,或配置为不缓存
  • 分层系统:有很多代理和负载平衡器,但一切都在网络上运行
  • 按需编码:网页通常提供一件事
  • 统一界面[编辑]
    • 请求中标识了各个资源:这就是URL
    • 操纵资源:表单(如果您有权限)
    • 自描述性消息:mime类型很多,但通常带有
      内容类型:text/html
      。标题告诉它是否可以缓存
    • 作为应用程序状态引擎的超媒体(又称HATEOAS):如果web不是超链接的集合,我不知道它是什么

这样,Web是静止的,那么为什么我们必须明确地说明关于网站的问题?当然,需要考虑的事情是使它工作起来友好:URL应该指向一个资源,因此只需修改而不必修改的代码应该是<代码>获取< /代码>请求。

GET
,因此无法共享搜索结果?这些都是网站创建者的设计缺陷。那些
GET
URL会改变服务器上的内容?在该领域工作了几个月的人都知道不应该使用
GET
。显示其他主要内容(不同的导航栏等都可以)由于某些会话状态,在具有相同URL的公共页面上存在设计缺陷(由于用户和爬虫无法共享该URL,这将损害您的网站使用)


REST是一个谈论网站的好方法,因为它明确地说明了web的基本规则,这些规则总是更抽象、更清晰,这有助于您的设计。的确,很多人没有意识到这一点。

REST和其他任何东西一样,是一个时髦词。您不必使用它的规则来完成工作。大多数人常见的“应用程序”只是数据检索,所以大部分是
GET
。在essance中,任何网站都是一种rest-application。尽管如此,通常会公然无视一些标准,但核心原则仍然存在。由于浏览器往往不支持本地端口a
。如果浏览器构建者愿意,他们可以支持这一点。但根据HTTP规范,实现这一目标非常重要。但是,为什么我们会看到大量的
REST和API的关联,而不是
REST和MVC框架应用程序的关联呢nt有一些特别的东西…?你的意思是有一个清晰的网站导航,和一个网站的逻辑URL?好的网站都有这些。我知道其中一些网站也会有很好的反应&如果我发送另一个
接受编码
,然后
HTML
,使用相同的URL表示HTML,其他网站没有太多的chrome(json、xml等)。如果你想建立一个伟大的网站,我的建议是这样做。@Wrikken:那么我们没有看到很多ReST应用程序的原因可能是因为浏览器实际上不支持某些ReST规范,至少不支持POST和GET的扩展。非常感谢你对这个问题的考虑n、 这有助于澄清一些问题