什么是RESTful API

摘要:
RESTful API是使用HTTP请求访问或使用数据的应用程序接口(API)的架构样式。这些数据类型指与资源相关的操作,如读取、更新、创建和删除。网站的API是允许两个软件程序相互通信的代码。API详细说明了开发人员编写从操作系统或其他应用程序请求服务的应用程序的正确方法。它是Web服务开发中经常使用的一种体系结构风格和通信模式。因为通过API绑定到服务是控制URL解码方法的问题。

RESTful API是利用HTTP请求访问或使用数据的应用程序接口(API)的体系结构样式。这些数据可用于GET,PUT,POST和DELETE数据类型,这些数据类型指的是与资源相关的操作读取、更新、创建和删除。
什么是RESTful API第1张

网站的API是允许两个软件程序相互通信的代码。API详细说明了开发人员编写从操作系统或其他应用程序请求服务程序的正确方法。

RESTful API(也称为RESTful Web服务或REST API)基于表示性状态转移(REST),它是Web服务开发中经常使用的一种体系结构样式和通信方式。

REST技术通常优于其他类似技术。这是因为REST使用较少的带宽,使其更适合高效的互联网使用。RESTful API也可以用JavaScript或Python之类的编程语言来构建。

浏览器使用的REST可以被视为互联网语言。随着云使用量的兴起,云消费者正在使用API公开和组织对Web服务的访问。REST是构建API的逻辑选择,它允许用户在分布式环境中灵活地连接、管理和交互云服务。

RESTful API如何工作

RESTful API使用分解事务来创建一系列小模块。每个模块处理事务的一个底层部分。这种模块化为开发人员提供了很大的灵活性,但是对于开发人员来说,从头开始设计REST API是一个挑战。目前,有几家公司提供了供开发人员使用的工具,例如本文演示工具EOLINKER:www.eolinker.com
什么是RESTful API第2张

RESTful API使用命令来获取资源。资源在任何给定时间戳下的状态称为表示资源(resource representation)。RESTful API使用RFC 2616协议定义的现有HTTP方法,例如:

GET检索资源;
PUT更改状态或更新资源的状态,该资源可以是对象,文件或块;
POST创建该资源;
DELETE删除资源。
使用REST,网络化组件是用户请求访问的资源,所有调用都是无状态的;RESTful服务在执行之间不能保留任何内容。

REST API支持的数据格式包括:
application/ json
application/ xml
application/ x-www-form-urlencoded
multipart/form-data
什么是RESTful API第3张

用途

由于调用是无状态的,因此REST在云应用程序中很有用。如果出现故障,无状态组件可以自由地重新部署,它们可以扩展适应负载变化。因为任何请求都可以定向到组件的任何实例,下一个事务不必记住任何保存的内容。这使得REST更适合用于Web。RESTful模型在云服务中也很有用,因为通过API绑定到服务是控制URL解码方式的问题。

RESTful API设计和架构约束

RESTful API设计由Roy Fielding在2000年的博士学位论文中定义。为了成为真正的RESTful API,Web服务必须遵守以下六个REST体系结构约束:

使用统一接口(UI)。资源应该通过单个URL进行唯一标识,并且只有通过使用网络协议的底层方法(例如带HTTP的DELETE,PUT和GET),才能对资源进行操作。

基于客户端服务器。客户端和服务器之间应该要清晰划分。UI和请求收集问题是客户端的领域。数据访问、工作负载管理和安全性是服务器的领域。客户端和服务器的这种松散耦合使得彼此之间可以独立开发。

无状态操作。所有客户端-服务器操作都应该是无状态的,并且所需的任何状态管理都应该在客户端进行而不是服务器上。

RESTful资源缓存。除非明确指出不可能进行缓存,否则所有资源都应允许缓存。

分层系统。REST支持由多层服务器组成的体系结构。

按需编码。大多数时候,服务器会以XML或JSON的形式发送回资源的静态表示。但是,必要时服务器可以向客户端发送可执行代码。

常见的REST API挑战

除了设计和体系结构的约束外,个人还必须面对REST API的一些挑战。可能具有挑战性的一些概念可能包括:

端点一致性。

API版本控制。

响应时间长,数据太多。

安全性。需要注意很多方面,包括使用以下方面:
HTTPS;
阻止来自未知IP地址和域的访问;
验证URL;
阻止意外的大有效载荷;
记录请求;
检查故障。

身份验证。使用常见的身份验证方法,例如HTTP基本身份验证(允许使用base64编码的用户名:密码字符串),API密钥,JSON Web Token和其他访问令牌。例如,OAuth 2.0适用于访问控制。

API测试。测试过程中可能具有挑战性的部分包括:
初始设置
架构更新
测试参数组合
序列API调用
验证测试参数
系统集成

定义错误代码和消息。
对于错误代码,使用标准HTTP错误代码是更常见的做法。错误处理除了解析正文或检查错误外,可能没有其他方法来区分响应是否成功。

随着时间推移的,开发人员开始使用RESTful API,并使用它们为网站和应用程序添加功能。如今,REST API被认为是“互联网的骨干”。

免责声明:文章转载自《什么是RESTful API》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java 数组 可变长参数 实例REST服务安全-双向认证下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一步步把 SAP UI5 应用部署到 SAP BTP Kyma 运行环境中去

这是 Jerry 2021 年的第 40 篇文章,也是汪子熙公众号总共第 317 篇原创文章。 Jerry 2018年曾经写过两篇文章,介绍了如何在 Kubernetes 这个容器编排平台上运行一个包含 SAP UI5 应用的 Docker 镜像。 在 Kubernetes 上运行 SAP UI5 应用(上) 在 Kubernetes 上运行 SAP U...

Thinkpad 笔记本待机亮度变低解决办法

        当你发现笔记本从待机恢复后,屏幕亮度变低,即使你调节亮度,它也很低而且亮度并不正常的。解决办法就是拔掉电源,然后重新插上,亮度就能恢复。当然我之前都是重启电脑解决。         但是,有的时候却不会变低。这是为什么呢?大家可以做这样一个实验:在待机的时候,笔记本有插电源和不插电源之分,插电源代表A,不插电源代表B。从待机恢复也有插电源和...

unity中ScriptableObject在assetbundle中的加载

转载请标明出处:http://www.cnblogs.com/zblade/ 以前都是写一些个人的调研博客,从今天开始,也写一些个人在开发中遇到的一些可以分享的趟坑博客,为后续的开发人员提供一些绵薄之力的帮助吧。 好的,今天就分享一个困扰了一个晚上的assetbundle中如何加载ScriptableObject的坑。 一、ScriptableObject...

【文文殿下】后缀自动机(SAM)求最长公共子串的方法

首先,在A 串上建立一个SAM,然后用B串在上面跑。具体跑的方法是: 从根节点开始,建立一个指针 p ,指着B串的开头,同步移动指针,沿着SAM的边移动,如果可以移动(即存在边)那么万事皆好,直接len++就好,但是,如果无法继续转移(失配了),那么,我们考虑跳回其父节点,因为其父节点的Right集是当前状态的真超集,那么其父节点状态所代表的字符串的集合中...

Oracle DBA 必须掌握的 查询脚本:

Oracle  DBA 必须掌握的 查询脚本: 0:启动与关闭                        orcle 数据库的启动与关闭 1:连接数据库   2:数据库开启状态的实现步骤:       2-1:启动数据库           2-1-1正常启动数据库: SQL> startup                       特点:...

Android平台Overlay机制

Android overlay 机制允许在不修改packages中apk的情况下,来自定义 framework和package中的资源文件,实现资源的定制。来达到显示不同的UI得目的(如MIUI)。 以下几类能够通过该机制定义: (1),Configurations (string, bool, bool-array) (2),Localization...