RESTful

一、什么是RESTful
1.1来源
REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。Roy Fielding是 HTTP 规范的主要编写者之一、Apache服务器软件的作者之一、Apache基金会的第一任主席。

1.2名称解释
REST,即Resource Representational State Transfer的缩写。意思是:“表现层状态转移”。

Resource:资源,即"数据",你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符;

Representational:某种表现形式–"资源"具体呈现出来的形式,比如用JSON,XML,JPEG等;

State Transfer:状态变化。通过HTTP动词实现(GET、POST、PUT、DELETE等)。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State
Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。

RESTful API就是REST风格的接口,RESTful是一种软件架构风格,而不是标准。

二、REST和SOAP的区别
2.1什么是SOAP
SOAP (Simple Object Access Protocol) 顾名思义,是一个严格定义的信息交换协议,用于在Web Service中把远程调用和返回封装成机器可读的格式化数据。事实上SOAP数据使用XML数据格式,定义了一整套复杂的标签,以描述调用的远程过程、参数、返回值和出错信息等等。总的来说,它是交换数据的一种规范,是一种轻量级的、简单的、基于xml的协议。

2.2两者区别

1.安全性:SOAP优于REST
2.效率和易用性:REST更胜一筹
3.成熟度:SOAP优于REST
4.REST是一种风格,而SOAP是一种协议

三、设计RESTful风格API
3.1、通信协议
采用Http协议,对于资源的具体操作类型,常用的HTTP动词有下面五个:

GET:从服务器取出资源(一项或多项)。
POST:在服务器新建一个资源。
PUT:在服务器更新资源(客户端提供改变后的完整资源)。
PATCH:在服务器更新资源(客户端提供改变的属性)。
DELETE:从服务器删除资源。

3.2、用 URL 定位资源
REST 的主体是资源,所谓“资源”,即数据,就是网络上的一个具体信息,例如:一张图片,一段文字、一种服务,所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。总之就是一个实际存在的东西,而 URL 就是用来指向这个资源的。

举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。

https://api.example.com/zoos
https://api.example.com/animals
https://api.example.com/employees

3.3、用 HTTP 动词描述操作

GET /zoos:列出所有动物园
POST /zoos:新建一个动物园
GET /zoos/ID:获取某个指定动物园的信息
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE /zoos/ID:删除某个动物园
GET /zoos/ID/animals:列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

四、RESTful 的其他细节
4.1、命名规则

  • 全部小写,用 _ 或 - 线连接。(之所以不用驼峰命名法,是因为早期的 URI
    一般都是表示服务器上的文件路径,而不同服务器对大小写的敏感性是不同的,为了兼容不同服务器所以才规定不能混用大小写字母。)
  • URL 中只用名词指定资源,因为 REST 的核心是资源,而表示资源的词语天然就是名词。 资源用复数表示。

4.2、版本
一种方法是在 URL 中添加版本号,例如:

https://api.example.com/v1/zoos

另一种方法是将版本号加在 HTTP 请求头信息的 Accept 字段中,例如:

Accept: version=1.0

网上能找到的版本号加在 URL 中的例子,都是如我上例所示的写法。但是 Jack_Zeng 指出,这样写容易有歧义,会让人误以为 v1 也是资源的一部分,一般都是这么写:

https://api.example.com/zoos?api-version=1

五、RESTful接口测试
专业的测试步骤:

在这里插入图片描述
5.1、测试的方法(列举其中两种)

1.采用Postman测试工具
2.采用swagger(不做介绍)

5.1.1、Postman的主要功能

  • 可以模拟各种HTTP 请求
  • Collection 功能(测试集合)
  • 人性化的Response整理
  • 内置测试脚本语言
  • 设定变量与环境

5.1.2、HTTP Header

Accept: 指定客户端能够接收的内容类型 Accept-Charset: 浏览器可以接收的字符编码集 Authorization:
HTTP授权证书 Content-Type: 请求的与实体对应的MIME信息 Referer:
先前的网页的地址,当前请求网页紧随其后,及来路

5.2、编写测试计划
了解完接口的格式之后,根据项目中的业务需求编写测试计划。现在有一个业务需求:

GET : http://localhost:8080/api/users/list
header : Content-Type =
application/json
body : 空
Response : 返回所有User对象
Status code : 200

测试计划:

实行的测试用例分为两种:
正向的测试用例 : 返回所有对象
负向的测试用例 : URL输入不正确

5.3、使用Postman进行用例的测试

正向测试用例:
在这里插入图片描述
在Tests里写下验证测试结果信息:
在这里插入图片描述
正向测试用例的返回结果:
在这里插入图片描述
在这里插入图片描述
负向测试用例:
修改为错误路径 http://localhost:8080/api/users/info

负向测试用例的返回结果:
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值