如果API只提供POST请求函数,那么它是RESTful的吗?

如果API只提供POST请求函数,那么它是RESTful的吗?,rest,restful-architecture,Rest,Restful Architecture,我不确定我是否正确理解RESTful API的概念。如果我理解正确,这样的API应该提供可以通过GET、POST、PUT和DELETE请求触发的函数。我的问题是:如果一个API只提供POST请求函数,它仍然是RESTful的吗。Restful有一些您应该遵循的准则。只要您正确地使用HTTP动词,并且关于URL命名的良好实践只有POST就可以了。另一方面,如果应用程序中的POST请求也可以删除记录,那么我不会称之为Restful。您可能应该观看和阅读 RESTA与您使用多少可用HTTP方法无关。因

我不确定我是否正确理解RESTful API的概念。如果我理解正确,这样的API应该提供可以通过GET、POST、PUT和DELETE请求触发的函数。我的问题是:如果一个API只提供POST请求函数,它仍然是RESTful的吗。Restful有一些您应该遵循的准则。只要您正确地使用HTTP动词,并且关于URL命名的良好实践只有POST就可以了。另一方面,如果应用程序中的POST请求也可以删除记录,那么我不会称之为Restful。

您可能应该观看和阅读

RESTA与您使用多少可用HTTP方法无关。因此,快速的答案是:是的,它可以被认为是“宁静的”(不管它实际上意味着什么)

布乌特最有可能是-不是。而且这与滥用
POST
调用无关

这种神奇的“RESTfulity”的主要指标实际上与如何发出HTTP请求无关(方法和漂亮的URL作为决定因素毫无意义)


重要的是返回的数据,以及通过查看这些数据,您是否可以了解与任何给定端点中的资源相关的其他资源和操作。这基本上是关于发现能力

REST在一段时间内是一个误用的术语,尤其是Stackoverflow的社区甚至不关心它的实际意图,即在分布式系统中将客户端与服务器API分离

客户机和服务器通过遵循某些建议来实现解耦,如避免在服务器上存储和管理客户机状态的有状态连接,使用资源唯一标识符(URI),以及进一步增加缓存能力等功能以减少服务器和客户机都必须执行的工作负载。While列出了6个约束条件,以及系统通过遵循这些条件获得的好处。其中包括:

  • API不应依赖于任何单一的通信协议,并且遵守且不违反所使用的底层协议。尽管REST大部分时间是通过HTTP使用的,但它并不限于此协议
  • 通过媒体类型重点关注资源及其展示
  • 客户端不应该对API中的可用资源或其返回状态()有最初的了解或假设,而应该通过发出的请求和分析的响应动态地了解它们。这使服务器有机会在不破坏客户端实现的情况下轻松地移动或重命名资源
因此,基本上,如果您仅将自己限制在HTTP上,那么您已经违反了REST试图强加的一般想法

正如@tereško提到的Richardson成熟度模型,我想澄清一下,在REST的范围内,这个模型是毫无意义的。即使达到了3级,也不意味着该体系结构遵循REST。任何未达到3级的应用程序都不会遵循这种体系结构风格。请注意,仅部分遵循REST的应用程序实际上并不遵循REST。这就像是要么正确,要么根本不正确

关于
RESTful
(论文中不包含这个术语),人们通常认为基于JSON的API是通过HTTP公开的

对于你的实际问题:

基于此报价

。。。这样的API应该提供可以通过GET、POST、PUT和DELETE请求触发的函数


就REST体系结构风格而言,我会说不,因为您基本上使用这样的API进行RPC调用(如果愿意的话,这可能是一个轻松的基于JSON的SOAP),只使用HTTP,而不完全使用底层HTTP协议的语义;如果你关注基于JSON的HTTP API人群,答案可能取决于你问谁,因为IMO对术语“RESTful”没有精确的定义。如果你触发服务器上的函数而不是资源,我在这里也会说不。

是的-RESTulI仍然在想,为什么会有投票关闭这个主题?这不是基于意见的问题,它与编程直接相关!这是一个架构问题,而不是编程问题@SaidbakR@JayBlanchard然而,它仍然是指编程。
restful
标记的后缀也是
architecture
。i、 e有一个标签允许谈论它。我想其他人可能会认为“如果一个API只提供这个方法,它仍然是这个体系结构吗?”@SaidbakR,仅仅因为标签存在并不意味着你可以问关于它的非编程问题。例如,OP没有提供,我的回答是正确的。如果你投了反对票,你应该解释原因。一点也不。你显然不知道这个问题。如有人所说,如果您介意的话,请阅读本文,Restful是一种体系结构,它有一些指导原则。我不希望Restful API有一个GET,当我调用它时会删除某些内容。它有很多方面,不仅仅是数据。这也不是关于URL是否“漂亮”,当你使用URL时应该有“原子性”,等等。@Martin我想你误读了我写的东西。或者你不明白什么是休息。不,我读对了。你写的(方法和漂亮的URL是毫无意义的)是完全错误的。对不起。。我的意思是“作为决定因素毫无价值”。更新。这很重要,而且正在决定。事实上,您提供的讲座展示了如何使用URL引用资源,并讨论了安全获取。引用您提供的讲座链接:“因此,现在我们不再向单一的服务端点发出所有请求,而是开始与单个资源进行对话。”这与URL命名有关。“第2级不再使用HTTP动词,而是尽可能地使用HTTP动词,以了解它们在HTTP本身中的使用方式。”其中谈到了HTTP动词的重要性。我认为你在误导提问的人。