RESTful编程到底是什么?
当前回答
RESTful(代表性状态转移)API编程是通过以下5个基本的软件架构风格原则,以任何编程语言编写web应用程序:
资源(数据、信息)。唯一的全局标识符(所有资源都由URI标识)。统一接口-使用简单标准接口(HTTP)。表示-所有通信都是通过表示(例如XML/JSON)完成的无状态(每个请求都是在完全隔离的情况下发生的,这样更容易缓存和负载平衡),
换句话说,您正在通过HTTP编写简单的点对点网络应用程序,该应用程序通过实现RESTful架构使用GET、POST、PUT或DELETE等动词,该架构提出了每个“资源”公开的接口的标准化。以一种简单有效的方式(高度成功、经过验证和分布式架构)使用web的当前特性并不重要。它是SOAP、CORBA和RPC等更复杂机制的替代方案。
RESTful编程符合Web体系结构设计,如果实现得当,它允许您充分利用可扩展的Web基础设施。
其他回答
一本关于REST的好书是《实践中的REST》。
必须读取代表性状态传输(REST),并且REST API必须是超文本驱动的
有关RESTful服务的解释,请参见Martin Fowlers的文章《Richardson成熟度模型》(RMM)。
要实现RESTful,服务需要实现作为应用程序状态引擎的超媒体。(HATEOAS),也就是说,它需要达到RMM中的3级,阅读文章以了解详细信息或qcon演讲中的幻灯片。
HATEOAS约束是首字母缩略词超级媒体的引擎应用程序状态。这一原则是REST之间的关键区别以及大多数其他形式的客户端服务器系统...RESTful应用程序的客户端需要只知道要访问的单个固定URL所有未来的行动都应该可从中动态发现超媒体链接包含在资源的表示从该URL返回。标准化媒体类型也是预期任何人都能理解可能使用RESTful API的客户端。(来自免费百科全书维基百科)
Web框架的REST Litmus测试是Web框架的类似成熟度测试。
接近纯REST:学会爱HATEOAS是一个很好的链接集合。
针对公共云的REST与SOAP讨论了REST使用的当前级别。
REST和版本控制讨论了可扩展性、版本控制、可演化性等。通过可修改性
RESTAPI是一种遵循REST体系结构约束的API实现。它充当一个接口。客户端和服务器之间的通信通过HTTP进行。RESTAPI利用HTTP方法建立客户端和服务器之间的通信。REST还使服务器能够缓存响应,从而提高应用程序的性能。客户端和服务器之间的通信是一个无状态的过程。我的意思是,客户端和服务器之间的每一次通信都像一次新的通信。
没有从以前的通信中携带的信息或记忆。因此,每次客户端与后端交互时,它都必须向其发送身份验证信息。这使后端能够确定客户端是否有权访问数据。
通过REST API的实现,客户端可以获得要与之通信的后端端点。这完全分离了后端和客户端代码。
什么是API测试?
API测试利用编程向API发送调用并获得产量。它的测试将被测段视为一个黑盒子。API测试的目的是在将部件协调到应用程序之前确认部件的正确执行和错误处理。
休息API
REST:代表性状态转移。
这是测试人员执行请求和接收响应的功能安排。在REST API中,通过HTTP协议进行交互。REST还允许计算机之间通过网络相互通信。对于发送和接收消息,它涉及使用HTTP方法,并且不像Web服务那样需要严格的消息定义。REST消息通常接受XML或JavaScript对象符号(JSON)形式的表单。
4常用API方法:-
GET:–它提供对资源的只读访问。POST:–用于创建或更新新资源。PUT:–用于更新或替换现有资源或创建新资源。DELETE:–用于删除资源。
手动测试API的步骤:-
要手动使用API,我们可以使用基于浏览器的REST API插件。
安装POSTMAN(Chrome)/REST(Firefox)插件输入API URL选择REST方法选择内容标题输入请求JSON(POST)单击发送它将返回输出响应
自动化REST API的步骤
RESTful编程是关于:
资源由持久标识符标识:URI是当今普遍使用的标识符使用一组常见的动词来操纵资源:HTTP方法是常见的情况-古老的Create、Retrieve、Update、Delete变为POST、GET、PUT和Delete。但REST并不局限于HTTP,它只是目前最常用的传输。为资源检索的实际表示取决于请求,而不是标识符:使用Accept标头来控制是否需要XML、HTTP,甚至是表示资源的Java对象保持对象中的状态并在表示中表示状态在资源表示中表示资源之间的关系:对象之间的链接直接嵌入到表示中资源表示描述了如何使用表示,以及在什么情况下应该以一致的方式丢弃/重新处理表示:HTTP缓存控制头的使用
最后一个可能是REST的后果和整体有效性方面最重要的。总体而言,大多数RESTful讨论似乎都集中在HTTP及其在浏览器中的使用上。我知道R.Fielding在描述导致HTTP的架构和决策时创造了这个术语。他的论文更多的是关于资源的体系结构和缓存能力,而不是HTTP。
如果你真的对RESTful架构是什么以及它为什么工作感兴趣,请读几遍他的论文,并阅读整个内容,而不仅仅是第5章!接下来看看DNS为什么工作。阅读DNS的分级组织以及转介的工作原理。然后阅读并考虑DNS缓存的工作原理。最后,阅读HTTP规范(尤其是RFC2616和RFC3040),并考虑高速缓存的工作方式及其原因。最终,它只会咔嚓一声。当我看到DNS和HTTP之间的相似性时,我得到了最后的启示。在这之后,了解SOA和消息传递接口是可伸缩的就开始了。
我认为,要理解RESTful和SharedNothing架构的架构重要性和性能含义,最重要的技巧是避免被技术和实现细节所困扰。关注谁拥有资源,谁负责创建/维护资源等。然后思考表示、协议和技术。
为了在这里贡献一些新的东西,我想分享我文章中的链接,即通过一种实用和客观的方法将REST概念化。
我将介绍以下主要概念:
HATEOAS-超媒体作为应用程序状态的引擎,资源和表示,可寻址性,REST中的幂等性,Richardson的REST成熟度模型。媒体类型API版本控制
我还创建了一个GitHub项目,您可以使用docker轻松运行,它涵盖了我在本文中介绍的内容。
https://itnext.io/how-to-build-a-restful-api-a-deep-dive-into-rest-apis-215188f80854
推荐文章
- ReferenceError: description没有定义NodeJs
- REST API - dto还是不是?
- OData和REST web服务的区别
- Symfony 2.x中的所有东西都应该捆绑吗?
- 用Spring我可以做一个可选的路径变量吗?
- 什么是HTTP“主机”报头?
- 用Python构建最小的插件架构
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- Django REST框架:向ModelSerializer添加额外字段
- 如何阻止恶意代码欺骗“Origin”报头来利用CORS?
- 模式、表和数据库之间的区别是什么?
- 为什么说“HTTP是无状态协议”?
- 我需要HTTP GET请求的内容类型报头吗?
- REST和RPC之间的Web服务差异
- 单页应用:优点和缺点