如果您熟悉现代Web开发,那么您将遇到REST和API等术语。如果您使用过API或听说过这些术语,但没有完全了解如何构建自己的API或它们如何通信和工作,那么本教程RESTful Web服务 - 初学者的简单教程就是为您准备的。
在本教程中,我将分享REST和RESTful API,REST原则概述,理解请求和响应,REST API端点以及最后结论。
另请阅读: Web服务面试问题
了解REST和RESTful API
REST是一个抽象概念。它不是框架,编程语言或软件。
REST也称为Representational State Transfer。它传达了Web服务的架构风格。
REST提供了一组用于在不同系统之间共享数据的标准或约束。
RESTful系统是实现REST的系统。
首先,在理解术语RESTful API之前,我们将了解什么是API。
一个API(应用编程接口)是允许软件程序之间的通信的接口。甲的RESTful API是遵循标准和REST的限制的API。
在Web API中,请求通过URL端点(见下文)传递给服务器,并在处理完请求后发送响应。响应通常是像JSON这样的格式的数据。
REST原则概述
对于REST,我们提到了需要遵循的标准和约束,以允许在不同系统之间共享数据。让我们看看4个指导约束:
1。服务器 - 客户端: 服务器(存储和操作数据)与客户端(发送请求和显示响应)之间的关注点分离。
2.无状态:每个请求所需的所有信息都放在每个请求中,而不依赖于会话。
3.统一接口:可以输入浏览器位置栏的路径使用URI标准来标识资源。
4.可缓存:服务器和客户端可以缓存资源。
什么是URL,HTTP,请求和响应
如果您有浏览互联网,那么您必须遇到所有网站都有以http或https(安全版本)开头的URL(统一资源定位符)这一事实。
URL是万维网页面的地址。
超文本传输协议(HTTP)是一种协议,换句话说,它允许服务器和互联网上的客户端之间的通信。
只考虑HTTP只能用于从服务器请求网站是不正确的。它不止于此。
当您点击网络上的URL时,您实际上是在对该特定资源执行GET请求,并且浏览器上显示的网页是响应的主体。我稍后会在这篇文章中讨论GET和其他类型的请求。
HTTP通过启动到服务器端口的TCP(传输控制协议)连接(用于https的443和用于http的80)来发出请求,然后等待响应状态和正文的服务器。
通常,请求必须包含URL,方法,正文和标题信息。
请求方法(HTTP动词)
有四种主要使用的HTTP方法。这些方法也称为HTTP 谓词。这些用于与Web API交互。这些方法定义了对任何给定资源采取的操作。
HTTP请求方法松散地遵循CRUD(创建,读取,更新,删除)的范例。
下表将清楚以上陈述。
动作请求方法(Http动词)
读取 GET
创建 POST
更新 PUT
删除 DELETE
GET请求仅用于读取操作。它不会改变服务器的状态。每次您在浏览器中点击URL(例如https://javahungry.blogspot.com或https://google.com)时,您都会向Google的服务器发送GET请求(blogspot也归Google所有)。RESTful服务中的
POST请求用于创建新资源。POST请求的最常见用法是注册为网站或应用程序的用户。当您提交表单时,可能会将具有用户数据的POST请求发送到服务器,这将进一步将该信息写入数据库。RESTful服务中的
PUT请求用于更新现有资源。PUT最常见的用法请求是编辑现有用户的配置文件。PUT是幂等的,而POST则不是。
幂等意味着产生相同的结果而不管同一次呼叫的次数。换句话说,进行多个相同的请求会产生相同的结果。
请考虑以下示例:
int temp = 8 ;
temp ++ ;
int temp = 8的第一行是幂等的。无论执行第一行的次数如何,temp都将始终显示值8。
第二行temp ++不是幂等的。执行第二行100次将产生不同的结果然后执行10次。
DELETE请求仅用于删除现有资源。
回复代码:
一旦从客户端向服务器触发请求,服务器将返回HTTP响应。
甲HTTP响应包含元数据,例如标头以及身体。
状态代码是响应中最重要的部分,它指示请求是否成功,是否存在错误或是否必须采取任何其他操作。
您将了解的最常见响应代码是404,表示未找到。4xx类状态代码表示客户端错误。404是它的一部分。
状态代码通常分为五类,每个类包含一系列响应。
1xx 信息
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务器错误
您可能知道的其他常见响应是301 Moved Permanently,用于重定向,换句话说,将网站重定向到新URL。
另一个常见的响应是500内部服务器错误,当服务器上发生意外情况而导致无法执行触发请求时,会出现此错误。
RESTful API及其HTTP谓词的所有响应都应在2xx范围内。
请求 响应
GET 200(成功)
POST 201(已创建)
PUT 200(成功)
DELETE 200(成功),202(已接受),204(无内容)
200是表示请求被成功处理的响应。它通常用作GET或PUT请求的响应。
POST将返回201创建的响应,以显示已创建新资源。
DELETE有一些可以接受的回复。例如,202表示已接受请求,而204请求表示由于资源不存在而没有要返回的内容。
cURL请求
可以使用cURL测试资源请求的状态代码。cURL是一个命令行工具,用于通过URL传输数据。使用curl,后跟-i或-include标志,后跟URL,将向URL发送GET请求。从服务器发回的响应将包含标头和正文。
例如 :
卷曲-include HTTPS://www.google.com
谷歌的服务器响应如下:
HTTP / 2 200
日期:周一, 22年7月2019年 11 :59 :40 GMT
到期: - 1
cache - control: private , max - age = 0
content - type: text / html ; charset = ISO - 8859 - 1
...
如您所见,我们发送的请求已成功处理。我们得到了200状态码,用的版本一起HTTP(HTTP版本可以是HTTP / 1.1或HTTP / 2)
由于在这个要求我们请求了一个网站(Google.com),内容类型(MIME类型)返回的是text / html。
在RESTful API中,最可能的内容类型是application / json来表示响应是JSON。
我们还可以通过稍微不同的URL来查看不同类型的响应。
我们将在没有www的情况下在Google上执行curl命令
例如:
卷曲-i HTTPS://google.com
谷歌的服务器响应如下:
HTTP / 2 301
位置: https://www.google.com/
content - type: text / html ; charset = UTF - 8
...
正如您在上面的回复中所看到的,Google会将google.com重定向到www.google.com。301状态代码表示正在重定向的资源。
REST API端点
在服务器上部署代码时,换句话说,就是在服务器上创建API。然后,您可以通过端点访问数据。
什么是端点?
端点是可以接受和处理POST,GET,DELETE或PUT请求的请求的URL 。
API URL将包含以下部分:
a。root: 例如https://example.domain.com/或https://example.domain.com/v2
简而言之,root可能包含协议,域名和版本。
湾 路径:例如https://example.com / books / 或
https://example.com / books / 123 / 提供资源
c的唯一位置。可选查询字符串: https : //example.com/books ?limit = 10 && type = fiction
可选的键值对用于分页,排序和过滤。
在IT行业,当大众找狗网的工程师说API是RESTful API时,他们指的是构建API URL端点的以下命名约定。
RESTful API的标准命名约定
1.路径区分大小写。例如https://example.com/books/3/与https://example.com/Books/3/不同
.2。路径应为复数,例如http://example.com/ books / 5 / is正确。以下是不正确的http://example.com/ book / 5 /
3.路径应使用连字符而不是下划线以小写字母书写。
4.端点不应在URL中显示文件扩展名。
5.端点应使用名词而不是动词。换句话说,REST URL不应包含删除或添加等字词。
上述公约仅是指导原则。遵循REST标准没有严格的规则。但是,遵循上述约定,您的API易于阅读和理解,也是一致的。
这一切都是为了这一天。如果您喜欢上面关于RESTful Web服务的文章:初学者的简单教程或有疑问,请在评论中提及。