什么是 Rest API?

10

什么是Rest API,为什么要使用它,我该如何创建一个并学习更多相关内容?所有函数应该采用GET/POST/DELETE/PUT形式。


1
你读过这个吗:https://dev59.com/_G445IYBdhLWcg3w3Nwf - Tim Biegeleisen
这也很好:https://dev59.com/a3RB5IYBdhLWcg3wSVcI - tinkerbeast
3个回答

2
简单来说,REST API 定义了一组函数,开发人员可以通过 HTTP 协议(例如 GET 和 POST)发送请求并接收响应。 REST API 应该指定它可以提供什么以及如何使用它,例如查询参数、响应格式、请求限制、公共使用/API 密钥、方法(GET/POST/PUT/DELETE)、语言支持、回调使用、HTTPS 支持和资源表示应该是自我描述的...

1

REST是一种高度可扩展和可缓存的架构,非常适合设计API。REST背后的基本思想-

  1. URL和标头应唯一标识资源,以便可以缓存。

  2. REST API应该是无状态的,即API调用的结果不应因其前面的API调用而变化。跨API保持状态会限制缓存,因此不被认为是符合RESTful的。

  3. 使用适当的HTTP动词,即GET用于读取和幂等请求,POST用于写入请求,PUT用于写入和幂等请求,DELETE用于删除资源。

  4. 返回符合REST标准的适当状态代码,以便在不同代理层上实现易用性和通用缓存。

  5. HATEOAS即超媒体作为应用程序状态引擎,它指出大多数URL不应硬编码,而是服务器端通过其响应提供URL来指导客户端。这个想法非常类似于我们在浏览器上使用网站的方式。


更正:1)只有URI用于标识资源。资源可以是任何东西,例如我或“幸福”。当在HTTP上使用时,URI加请求头选择一个“资源的表示”——数字字节流,例如我的肖像的JPEG图像。3和4)除了满足常见接口约束以外,这些对于REST并不必要,如果将HTTP作为应用程序协议使用。除了您描述的接口之外,可以选择其他接口。例如,HTML仅使用GET和POST,但接口是共享的,因此满足REST。 - Nicholas Shanks
我有点同意你的第一个观点,即头部应该主要用于不同表示的变化。 - hspandher
我有点同意你的第一个观点,即头部应该主要用于不同表示的变化。但是很多时候,头部也被用于版本控制。同样,很多人倾向于使用URL进行版本控制。但这些API仍然不能算是“非RESTful”的。其次,就正确的动词而言,建议使用正确的动词。此外,大多数使用Restful URL的网页(例如Ruby on Rails)并不是真正的“RESTful”,因为它们不是无状态的(会话)。最后,REST只在HTTP协议的上下文中有效。你不能在SOAP等其他协议中使用REST。 - hspandher
1
关于你最后一句话,我必须表示不同意。REST与HTTP无关,除了它是REST“架构风格”所衍生的原则的灵感来源之外。RESTful架构可以为其他应用程序创建。你回复评论的其余部分谈论了REST被误用的情况,好像那就是它应该的方式,而不是像你回答开头句子所说的,“基本思想是什么”。最后,你说“使用正确的动词”,但REST并没有定义这些动词。正如我所说,HTML是restful的,只使用GET和POST - 这些是正确的。 - Nicholas Shanks
2017年11月17日的负面投票。你的第二点是误导性的。请删除此答案或将其设为社区维基。 - RinkyPinku

0

REST是一种非常流行的架构,用于开发,并且是一种在Web服务开发中经常使用的两个非常不同组件之间通信的方法。此外,REST不会占用太多带宽,这使其更适合在网络上使用。这使得REST比SOAP更适合,因为与SOAP不同,您不必创建服务器和客户端。在SOAP的情况下,您必须单独创建一个服务器程序来提供数据和一个客户端程序来请求数据。

详细的知识库可以在http://srijan.net/blog/rest-api-and-its-utility-real-web-applications找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接