




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,RESTful API简介,目录:,OpenAPI 3.0,JSON及其语法简介,HTTP/2概述,RESTful API简介,议题 REST是什么 REST式服务的特点 REST式服务的优点 云学堂RESTful API,REST是什么 REST(Representational State Transfer):表示性状态转移,分布式超媒体软件的一种架构风格 -源自2000年Roy Thomas Fielding的博士论文。 一套简单的设计原则、一种架构风格(或模式),不是一种具体的标准或架构。 基于使用HTTP、URI等现有的广泛流行的协议和标准 对Web的本质回归,一种真实描述Web的方式 REST目的:寻找Web特性,然后使用这些特性来指导Web设计,议题 REST是什么 REST式服务的特点 REST式服务的优点 云学堂RESTful API,REST式服务的特点 网络上的所有事物都被抽象为资源, 每个资源对应一个唯一的资源标识URI 通过HTTP协议方法作连接器对资源进行操作 对资源的任何操作不改变资源标识URI 所有的服务器操作都是无状态的,议题 REST是什么 REST式服务的特点 REST式服务的优点 云学堂RESTful API,REST式服务的优点 可以利用缓存Cache来提高响应速度 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性 浏览器即可作为客户端,简化软件需求 相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小 不需要额外的资源发现机制 在软件技术演进中的长期的兼容性更好,议题 REST是什么 REST式服务的特点 REST式服务的优点 云学堂RESTful API,云学堂RESTful API 架构设计 ,云学堂RESTful API 协议 HTTPS更佳,条件限制时采用HTTP 域名 专用域名 版本 URI 集合资源 (英文单词复数) 单个资源 (唯一标识这个资源的id,不限于uuid) 从属关系 ,云学堂RESTful API HTTP方法 GET:获取(SELECT) POST:新建(CREATE) PUT:更新(UPDATE) DELETE:删除(DELETE) HTTP方法 + URI API POST+集合资源URI:在服务器新建一个资源。 GET+集合资源URI:从服务器取出资源列表。 GET+单个资源URI:在服务器取出特定资源。 PUT+单个资源URI:在服务器更新特定资源。 DELETE+单个资源URI:从服务器删除资源。,云学堂RESTful API 请求头 Source 标识调用方的类别 (101,102,103,201,202.) Token 标识当前操作者的身份 Content-Type 标识请求体内容格式 (application/json) Origin 用于设定js跨域访问时允许的域名 User-agent 标识当前请求所用的操作系统和浏览器信息 X-FORWARDED-FOR IIS服务器端调用RESTful API时需要传递客户端ip,云学堂RESTful API 请求参数 主要用于获取资源列表类型的API 排序 ?order=email%20asc 参数值为字段名+%20+asc或desc 分页 ?offset=30&limit=10 分别用于指定返回记录的开始位置和每页记录数 请求体 HTTP方法为POST/PUT时需要 具体定义需看API文档,云学堂RESTful API 响应状态码 200 OK - GET:服务器成功返回用户请求的数据。 201 CREATED - POST/PUT:用户新建或修改数据成功。 204 NO CONTENT - DELETE:用户删除数据成功。 400 INVALID REQUEST - POST/PUT:用户发出的请求有错误。 401 Unauthorized - *:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - * 表示用户得到授权(与401错误相对),但是访问是被禁止的。 404 NOT FOUND - *:用户发出的请求针对的是不存在的记录。 500 INTERNAL SERVER ERROR - *:服务器发生错误,用户将无法判断发出的请求是否成功。 响应体 HTTP方法为GET/POST时返回 有Error时返回 具体定义需看API文档,云学堂RESTful API 响应头 Location HTTP方法为POST时返回 用来表示新创建的资源URI Access-Control-Allow-Origin 跨域访问时设置允许的域名 响应体 HTTP方法为GET/POST时返回 具体定义需看API文档,云学堂RESTful API 出错时的响应 状态码 40050X 具体参见API文档中的Error列表 响应体 格式 “error“: “key“: “$errorKey“, “message“: “$errorMsg“ 具体参见API文档中的Error列表,OpenAPI 3.0,OpenAPI,规范目标:定义标准的、独立于语言的指向 REST API 的接口,使得服务能力无需访问源代码、文档,或是借助于网络流量检查,就可被人类和计算机发现并理解。通过对 OpenAPI 做适当定义后,消费者可使用最小数量的实现逻辑理解远程服务,并与远程服务交互。,定义:Open API即开放API,也称开放平台。 所谓的开放API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网站服务封装成一系列API(Application Programming Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站的API,所开放的API就被称作OpenAPI(开放API),新的 OpenAPI 规范 3.0 带来了如下重大改进,为实现更好的可重用性,对规范的整体架构进行了重构,重构后的架构如下图所示。 支持 oneOf、anyOf 和 not 的 JSON 模式。 可使用模式的参数。 引入了 Cookie 参数,去除了 dataForm 参数。 具有自身实体的主体参数(Body Parameter)。 可协商的内容类型。 多主机支持。 简化了安全定义,改进的 WebHooks 不再通过回调机制描述。,OpenAPI 3.0 基础URL结构,JSON及其语法简介,JSON简介,JSON (JavaScript Object Natation) 一种轻量级的数据交换格式 和XML一样,基于纯文本的数据格式 可以表达String、Number、Boolean、数组、甚至对象等数据 适合于服务器与JavaScript客户端的交互,JSON基本语法,JSON实际上基于JavaScript语法的一个子集。 值的表示 字符串、数值、true、false、null、Object或数组等。 字符串 “abc“ 、 “rn“ 、 “u00A9“ 数值 123 、 -123.5 布尔 true 、 false null,JSON基本语法,数组表示 使用 包含所有元素,每个元素用逗号分隔,元素可以是任意的值。 比如: “abc“ , 123 , true, null 访问其中的元素,使用索引号,从 0 开始。,JSON基本语法,Object表示 用 包含一系列无序的 Key-Value 键值对表示,其中Key和Value之间用冒号分割,每个key-value之间用逗号分割。 比如: “bookname“:“Ajax基础“, “publisher“:“电子工业出版社“, “price“: 56.0 访问其中的数据,通过obj.key来获取对应的value,JSON基本语法,复杂数据表示 Object或数组中的值还可以是另一个 Object 或者数组 ,以表示更复杂的数据 比如: List list=new ArrayList(); List.add(emp) “name“:“张三“, “age“:18 , “loves“:“看书“,“玩游戏“, “name“:“王五“, “age“: 20,“loves“:“旅游“ ,HTTP/2概述,HTTP/2概述,CONTENTS,PART 1,PART 2,HTTP基础,Http/2协议,PART 3,Http/2支持情况,PART 4,Http/2疑虑,HTTP基础,1,1.1,缩略语,1.2,版本演进,1.3,HTTP概述,1.5,安全相关,1.4,HTTP现状与优化,1.1、HTTP基础缩略语,1,2,3,HTTP:超文本传输协议(HyperText Transfer Protocol),IETF:互联网工程任务组(Internet Engineering Task Force ),RFC:Request For Comments,一系列以编号排定的文件 几乎所有互联网标准都收录在RFC文件之中,4,HTTPS:HTTP的安全版(HTTP over Secure Socket Layer),5,SSL:安全套接层(Secure Sockets Layer) TLS:传输层安全协议(Transport Layer Security Protocol),1.2、HTTP基础版本演进(HTTP),SPDY,2009,HTTP/1.0 RFC 1945,1996.5,HTTP/0.9,1991,1997.1,2015,HTTP/1.1 RFC 2616,HTTP/2 RFC 7540,1.2、HTTP基础版本演进(SSL/TLS),TLS 1.0,1999,NetScape公司发布SSL 2.0版,很快发现有严重漏洞,1995,NetScape设计SSL 1.0,但未发布,1994,1996,2006,SSL 3.0版问世,得到大规模应用,TLS 1.1,TLS 1.2,2008,2012,TLS 1.2 修订版,SSL 3.1,SSL 3.2,SSL 3.3,1.3、HTTP基础HTTP概述,1.4、HTTP基础HTTP现状与优化,1.5、HTTP基础安全相关,SSL,安全隐患,TLS,窃听风险,篡改风险,冒充风险,加密传播,校验机制,CA证书,应对机制,安全隐患及应对机制,Https握手机制,客户端(一般为浏览器),服务端(一般为 Web应用),服务端响应(支持的协议版本不一致时直接关闭通信渠道) 传输数据:确定的协议版本和加密算法、证书(包含公钥)、随机数R2,客户端握手结束(证书验证通过或被信任之后) 传输数据:使用公钥加密后的随机数R3、编码改变通知、客户端握手结束通知(hash值),客户端加密请求 传输数据:支持的协议(如TLS 1.0)、加密算法(如RSA)、随机数R1,服务端握手结束 传输数据:编码改变通知、服务器握手结束通知(hash值),通讯双方使用三个随机数一起产生对称加密的密钥,后续通讯全部加密传输,涉及4个相关概念 证书 非对称加密 对称加密 hash摘要算法,HTTPS安全相关算法,HTTP/2协议,2,2.1,概述,2.2,连接,2.3,帧,2.4,多路复用,2.6,头部压缩,2.7,中断,2.8,服务端推送,2.9,流量控制,2.5,优先级,2.10,NPN/ALPN,2.1、HTTP/2协议概述,2.2、HTTP/2协议连接(一),2.2、HTTP/2协议连接(二),1、连接(Connection)同域名下所有通信都在单个连接上完成,可以承接任意数量的双向数据流,2、流(Stream)具有唯一整数ID,以消息的形式发送,流(Stream),4、Data,4、Headers,3、请求消息(Request Message),Data,Data,3、响应消息(Response Message),Headers,Data,Headers,请求消息(Request Message),Data,Data,响应消息(Response Message),Headers,消息由一个或多个帧组成,帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装,2.3、HTTP/2协议帧,2.4、HTTP/2协议多路复用,2.5、HTTP/2协议优先级,2.6、HTTP/2协议头部压缩(一),原理:维护一份字典索引表,实际传输时只传输对应索引 如使用2表示:method=GET,5表示:path=/index.html等,常见的Header名称,常见的Header及取值,用于动态添加内容 和HTTP2连接关联,每个连接维护一个动态字典,2.6、HTTP/2协议头部压缩(二),2.7、HTTP/2协议中断,HTTP/1.1的有一个缺点是:当一个含有确切值的Content-Length的HTTP消息被送出之后,你就很难中断它了。当然,通常你可以断开整个TCP链接(但也不总是可以这样),但这样导致的代价就是需要通过三次握手来重新建立一个新的TCP连接。一个更好的方案是只终止当前传输的消息并重新发送一个新的。,在HTTP/2里面,可以通过发送RST_STREAM帧来实现这种需求,从而避免浪费带宽和中断已有的连接。,2.8、HTTP/2协议服务端推送,这个功能通常被称作“缓存推送”。 主要思想:当一个客户端请求资源X,而服务器知道它很可能也需要资源Z的情况下,服务器可以在客户端发送请求前,主动将资源Z推送给客户端。 功能控制:服务器推送需要客户端显式的允许服务器提供该功能。 中止:如果不需要的话,客户端可以通过发送一个RST_STREAM帧来中止。,2.9、HTTP/2协议流量控制,每个http2流都拥有自己的公示的流量窗口,它可以限制另一端发送数据。 对于每个流来说,两端都必须告诉对方自己还有足够的空间来处理新的数据,而在该窗口被扩大前,另一端只被允许发送这么多数据。 只有数据帧会受到流量控制。,2.10、HTTP/2协议NPN/ALPN,Next Protocol Negotiation (NPN)是一个用来在TLS服务器上协商SPDY的协议。IETF将这个非正式标准进行规范化,从而演变成了ALPN(Application Layer Protocol Negotiation)。 ALPN和NPN的主要区别在于:谁来决定通信协议。在ALPN的描述中,是让客户端先发送一个协议优先级列表给服务器,由服务器最终选择一个合适的。而NPN则正好相反,客户端有着最终的决定权。 NPN:客户端决定 ALPN:服务端决定,HTTP/2支持情况,3,3.1,总览,3.2,Firefox,3.3,Chrome,3.4,Nginx,3.5,Java,3.1、HTTP/2支持情况总览(一),3.1、HTTP/2支持情况总览(二),说明: h2:支持HTTP/2正式版 h2c:支持HTTP/2非加密通道 h2-14:支持HTTP/2第14号草案版(共有00-17等18个草案版) h2c-14:支持HTTP/2第14号草案的非加密通道版,3.2、HTTP/2支持情况Firefox,从Firefox35之后 默认支持HTTP/2,支持情况,HTTP/2.0,响应头,仅支持TLS,TLS,插件 HTTP/2 and SPDY Indicator,图形化,3.3、HTTP/2支持情况Chrome,HTTP/2 and SPDY Indicator,3.4、HTTP/2支持情况Nginx(一),从 Nginx 1.9.5 开始 提供http_v2_module,3.4、HTTP/2支持情况Nginx(二),https:/docs.spring.io/spring-boot/docs/2.0.0.BUILD-SNAPSHOT/reference/htmlsingle/#howto-configure-http2,3.5、HTTP/2支持情况Java,Java类库,HttpComponents 5.0-beta1 Netty,开发框架,服务器,SpringBoot 2.0.0 SNAPSHOT,Apache Tomcat 8.5+ Jetty,配置:server.http2.enabled 要求:JDK8+,和具体web容器有关 限制:不支持h2c,/httpcomponents-core-5.0.x/examples.html,/tomcat-8.5-doc/config/http2.html,配置: 要求:Java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政效能评估标准的试题及答案
- 医学影像诊断技巧试题及答案总结
- 人员流失风险分析与应对策略
- 深入分析语文试题及答案2025年版
- 经济法与当代时代试题及答案
- 水平提升技巧盘点执业医师考试试题及答案
- 2025年自考行政管理个性化学习试题及答案探讨
- 细化2025年行政管理专科语文考试考点试题及答案
- 新疆哈密地区第二中高二下学期期末考试历史试题
- 中东呼吸综合征病例诊疗方案课件
- 牛皮基础知识PPT优质课件
- 黄岩区区级以下河道管理范围
- DB32∕T 3921-2020 居住建筑浮筑楼板保温隔声工程技术规程
- 适老化居家环境设计与改造-项目三-适老化居家环境课件(PPT 37页)
- 最新幼儿园小朋友认识医生和护士PPT课件
- 安全现场文明施工措施费用清单
- 《苏东坡传》精美(课堂PPT)
- 国标法兰尺寸对照表
- 强制执行申请书-(工资强制执行)
- 华电 电厂招聘化学试题
- 上海市住宅修缮施工资料及表式(共251页)
评论
0/150
提交评论