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

负向测试用例的返回结果:


相关教程
https://www.imooc.com/learn/811
https://www.imooc.com/learn/1048

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361

推荐阅读更多精彩内容

  • RESTful架构,是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多...
    情鬼下凡阅读 238评论 0 0
  • RESTful学习笔记 RESTful是什么? 它的本质是一种软件架构风格,核心是面向资源(面向资源去设计API)...
    EL_PSY_CONGROO阅读 328评论 0 0
  • 此文包含内容 1)什么是RESTful2)SOAP和REST的区别3)如何设计RESTFul风格API(动物园为例...
    ZhaoJw_44b1阅读 279评论 0 0
  • 一、什么是RESTful 1、起源 REST这个词起源于2000年Roy Thomas Fielding在他的博士...
    MonesyHuang阅读 1,599评论 0 0
  • 一、说明 REST表示 Representational State Transfer(表示性状态转换). 它是可...
    洛杉矶嘚凌晨阅读 261评论 0 0