『政善治』Postman工具 — 3、补充:restful风格接口的项目说明
补充:restful风格接口的项目说明
(一)RESTful架构风格特点
1、统一接口风格
http://服务器地址:端口号[/项目名称/版本/资源]
http://
:为我们HTTP协议的访问头标准。服务器地址
:为我们项目服务器IP地址。端口号
:为我们服务器内项目访问的指定编号。[/项目名称/版本]
:可选 。资源
:互联网-图片、音乐、视频、文本、数据。
2、规范的HTTP请求方法
GET
:从服务器取出资源(一项或多项)。POST
:在服务器新建一个资源。(单条或多条)PUT
:在服务器更新资源。DELETE
:从服务器删除资源。
3、HTTP响应码
序号 | 状态码 | 动词 | 说明 |
---|---|---|---|
1 | 200 | GET | 服务器成功返回用户请求的数据 |
2 | 201 | POST | 用户新增数据成功 |
3 | 201 | PUT | 用户修改数据成功 |
4 | 204 | DELETE | 用户删除数据 |
5 | 400 | POST/PUT | 用户发出的请求有错误,服务器没有进行新建或修改数据的操作 |
6 | 404 | GET | 服务器没有返回资源. |
4、什么是无状态
为什么说HTTP协议是无状态的协议呢?
因为它的每个请求都是完全独立的,每个请求包含了处理这个请求所需的完整的数据,发送请求不涉及到状态变更。
而且再次请求也无法判断他是否之前请求过,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
看看下面故事你会有所启发。
- 无状态(Stateless)
魔都的老王开了一个会所,一个开会的地方,有大会议室、小会议室、Cosplay情景会议室。
顾客听说这个会所有特色,于是纷纷前来消费,小明就是其中的一员。
小明上次会议室体验很棒,尽管有点贵,本周又前来消费。
结账时,小明以为老王认识自己,和老王套近乎弄个优惠价:“王老板,我上周刚来过,打个折扣呗”!
老王很茫然地瞅着小明:“上周你来过?我好像一点印象也没有了嘛,很抱歉,无法优惠”!
小明很不爽地付完钱走人… - 有状态(Stateful)
老王有一个助手叫小王,看到这一幕于是和老板有一番对话:
小王:老板,下次客人来消费,咱们给客人发一张小卡片,来一次打卡一次,凡是打过卡的,都有优惠。
来的次数越多,折扣力度越大,这样就能有更多的回头客,您看如何?
老王连说这是好主意,以后就这么干!
小明第一次来领了一张考勤卡,打了卡,夹在钱包里。
第二次来消费埋单时,小明从自己的钱包掏出考勤卡,老王一看原来是回头客,好说好说,88折优惠,小明和老王都笑的合不拢嘴… - Cookie
后来老王觉得考勤卡上,还应该多记录一些内容,才能更好地服务客户,考勤卡上慢慢增加了更多内容。
会员卡片样例如下:
小明再次来消费时,不仅可以优惠,还可以根据小明的消费习惯,做出最合理的安排。
随着服务的精细化,小卡片上描述客户的信息越来越多,卡片越做越大,由于小卡片受4K字节的限制,每次客户前来消费都要携带大大的卡片,这很夸张! - Session
小王寻思着,小卡片一直都是客户携带,为何不在公司的电脑上弄个数据库,记录客户的消费习惯,每个客户有一个数据库明细。
客户明细如下:
给小明的小卡片上只要有一个客户代号"08029snne3e0kekllojeis007"就可以了,查询电脑就可以知道是小明消费信息和消费习惯,消费完还可以从账户余额内扣除。
这个客户代号就是SessionlD,通常保存在客户端浏览器的Cookie里。
总结:
上文故事中的"Stateless"、“Stateful”、“Cookie”、"SessionID"以及"Session"与HTTP协议中这些关键词具有相类似的意思。
HTTP最初的设计是无状态的(stateless),但是无状态的HTTP无法满足互联网日益发展的需求,于是业界扩展了HTTP协议,增加了有状态(stateful)协议头,使之变成一个有状态协议。
这个有状态的协议头,就是依靠Cookie来实现的,Cookie是维系客户端与服务器之间状态同步的纽带。
无论什么类型的Cookie,都是由服务器来一手创建,最终解释权归服务器,只有服务器才理解这些Cookie所代表的真正涵义;客户只负责携带,不需要理解Cookie的真正意义!
参考:https://www.zhihu.com/question/23202402,解释的很精彩。
(二)JSON数据格式说明
restful风格接口的数据返回格式一般为:JSON数据格式。
1、什么是JSON
JSON 指的是 JavaScript 对象表示法(Java Script Object Notation)。
JSON 是轻量级的文本数据交换格式。
JSON 具有自我描述性,更易理解。
2、JSON格式的特点
JSON 是纯文本,具有"自我描述性"和“层级结构性”。
读写的速度更快,消耗流量少。
3、JSON语法
- 格式1
JSON对象:{"键1":"值1","键2":"值2"}
- 格式2
JSON数组:[值1,值2,值3.....]
- 格式3
对象+数组:{"name":"葫芦娃","age":"8","技能":[" "," "," "]}
- 格式4
数组+对象:[{"name":"葫芦娃","age":"8"},{"name":"葫芦娃","age":"8"}]
『政善治』Postman工具 — 3、补充:restful风格接口的项目说明相关推荐
- 『政善治』Postman工具 — 18、NewMan的使用
文章目录 1.NewMan执行Postman测试集 (1)导出collections (2)使用NewMan执行Collection 2.NewMan命令常用选项 3.加入环境变量 4.加入数据驱动 ...
- 『言善信』Fiddler工具 — 3、Fiddler页面布局(菜单栏)
文章目录 (一)页面布局 (二)菜单栏 1.File文件菜单: 2.Edit编辑菜单: 3.Rules规则菜单: 4.Tools工具菜单: 5.View视图菜单 6.Help帮助菜单: (一)页面布局 ...
- 『言善信』Fiddler工具 — 17、抓取移动端App请求
文章目录 1.Android移动端App抓包 2.IOS移动端App抓包 3.总结: 1.Android移动端App抓包 前提: 因为Fiddler抓包的原理就是通过代理,所以确保被测终端要和安装Fi ...
- 『言善信』Fiddler工具 — 9、Inspectors(检查器)界面
文章目录 1.请求报文 2.响应报文 3.说明响应报文中Transformer选项 Inspectors意思是检查器.Inspectors可以使用多种方式,查看请求的请求报文和响应报文相关信息. In ...
- 『与善仁』Appium基础 — 14、APPium安装(包含Node.js安装)
文章目录 (一)APPium server安装 方式一:(推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二: 1.Nod ...
- 『与善仁』Appium基础 — 3、移动端测试环境搭建(三)之AVD模拟器安装
文章目录 1.Android Virtual Devices安装 当前市面上Android版本的模拟器还是挺多的,我们主要说明三款Android模拟器. 分别是:Android Virtual Dev ...
- 『居善地』接口测试 — 11、接口自动化框架的设计与实现(三)
文章目录 4.接口目录中的方法的实现 5.测试用例目录的实现 6.测试用例参数化实现 4.接口目录中的方法的实现 每一个接口或者一类接口封装成一个interface(也就是一个接口对应一个.py文件) ...
- “善于治”和“以善治”:华为云Stack在智慧城市的十年踪迹十年心
中国古书<书·大禹谟>中便有"德惟善政,政在养民"的说法,以善政推动更高效.透明.专业的城市治理,是政府作为城市管理的主导力量,一直以来的追求. 时代大势,浩浩汤汤.这 ...
- [日推荐]『知乐邀请函』好用的H5制作工具
2019独角兽企业重金招聘Python工程师标准>>> 今天小编要给大家推荐一款很好用的H5制作小程序. 知乐邀请函 简介:知乐邀请函,在微信小程序中制作流行的H5页面.有官方和设计 ...
最新文章
- 远震波形射线计算的局限性
- C++实现的简单vector
- windows在命令行中查看当前路径
- 子数组和最接近零问题
- linux安装教程 ce,docker CE安装教程
- Html5和Css3扁平化风格网页
- stl::vector排序二例
- css的animation动画
- java list 取两条_java list集合中有多条数据随机两条一组
- 安装 | MATLAB2020a (64位) 安装教程及安装包下载链接
- 学生考勤系统设计mysql_学生考勤系统的设计与实现(Eclipse,MySQL)
- Jenkins:This is especially strange since your build otherwise succeeded.及不是内外部指令问题
- Xmarks不会关闭了,太好了!
- 为什么镜子里的影像左右颠倒而不是上下颠倒 - Google 谷歌 百度 baidu 阿里巴巴 alibaba 微软 华
- 计算机如何设置保存到桌面,怎么将电脑桌面上的文件设置默认保存到D盘?
- OpenCV-Python学习(18)—— OpenCV 图像几何变换之图像平移(cv.warpAffine)
- 开源激光SLAM项目BLAM-----1
- CentOs7怎么查看系统版本
- MATLAB矩阵每行按降序排列,每列升序并记录行号
- linux下怎么安装打印驱动安装驱动程序,Linux下安装HP打印机的驱动程序
热门文章
- 如何安装wmware tools
- 对MSRA-USTC 2011的 meng-meng(萌萌) 的team project的学习和评价
- 网络安全漏洞原理利用与渗透
- 3.26黄金原油后市看涨吗?3.27原油白银td操作建议走势分析
- CentOS7下配置域名解析服务器
- html5自带可编辑文字属性
- Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码
- 移动安全之Android安全检测工具大全
- 巡检机器人智能图像识别算法
- 工程职业伦理_Mooc_2019_期末考试参考答案