通用接口标准规范_第1页
通用接口标准规范_第2页
通用接口标准规范_第3页
通用接口标准规范_第4页
通用接口标准规范_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

--本页仅作为文档封面,使用时请直接删除即可--

--内页可以根据需求调整合适字体及大小本页仅作为文档封面,使用时请直接删除即可--

--内页可以根据需求调整合适字体及大小--通用接口标准规范v1(总10页)PAGE接口标准规范NO.修改后版本号修改的页码及条款修改类型、原因及说明修改人修改时间1全文创建2019/1/1目录接口标准规范 1第1章 概述 3第2章 基本要求 4信息通讯安全 4安全评估 4访问控制 4防恶意代码 4加密 5支持高并发 6可监控 6日志全覆盖 6系统资源的动态扩展 6异常处理机制 7业务扩展 7第3章 接口通讯方式 7同步请求/应答方式 7异步请求/应答方式 7会话方式 7广播通知方式 7事件订阅方式 7文件传输 8可靠消息传输 8第4章 传输控制要求 8负载均衡 8伸缩性与动态配置管理 8网络调度 9充分理由 9单一职责 9高内聚低耦合 9状态及消息 10控制数据量 10禁止随意拓展参数 10第5章 接口技术 10第6章 接口规范 11域名规范 11http接口 11webservice接口 11API路径规范 11http接口 11webservice接口 11版本控制规范 12http接口 12webservice接口 12API命名规范 12新增方法 13删除方法 13修改方法 13获取方法 13获取列表方法 13请求参数规范 14参数需要命名规则 14请求参数加密方法 14列表请求特殊规范 15返回数据规范 15第7章 接口文档规范 16第8章 接口管理 16对接口分类、编码排序。 16在线文档。 16概述本文主要为了明确标准和规范,为服务使用方和服务提供方提供开发参考。基本要求为了保证系统的完整性和健壮性,系统接口应满足下列基本要求:信息通讯安全安全评估保证接口的自身安全,通过接口实现技术上的安全控制,做到对安全事件的“可知、可控、可预测”,是实现系统安全的一个重要基础。访问控制如果客户端很频繁的请求服务器,会给给服务器造成很大的压力,需要对客户端对API的请求做一些限制。比如单位时间内同一IP只能请求多少次。防恶意代码用户名sql注入例如:用户名sql注入登录名输入:lilei'#select*fromstudentwhereuser='lilei'andpsd='123456'sql语句就变成了select*fromstudentwhereuser='lilei'#'andpsd='123456'(#/--后面的内容都会被注释掉)跨站脚本例如脚本攻击测试:<script>alter(123456)</script>命令注入:PHP提供部分函数用来执行外部应用程序异常字符测试:结束符、换行符,针对字符串,在中间插入特殊字符,比如结束符等,服务端没有进行验证1、调用可执行的系统命令函数。2、函数活着函数的参数控制。3、拼接注入命令<script>alter(123456)</script>。命令注入:PHP提供部分函数用来执行外部应用程序异常字符测试:结束符、换行符,针对字符串,在中间插入特殊字符,比如结束符等,服务端没有进行验证1、调用可执行的系统命令函数。2、函数活着函数的参数控制。3、拼接注入命令。加密接口调用方和接口提供方约定好统一的参数加密算法。(加密方法参照接口规范的请求参数规范)接口调用方在调用时把加密后的_sign放在参数中去请求接口。接口提供方接到响应后,判断时间戳是不是在有效时间内(这个时间间隔根据你的安全范围可以是10分钟,5分钟,20秒等,过期失效,前提是需要保证接口提供方和调用方的服务器时间为准确的网络同步时间)。把参数中除了_sign以外的参数进行加密,然后把加密结果和传过来的_sign比较,相同则执行调用请求。如果服务器和客户端的时间没有同步,可以返回错误的同时候在返回一个服务器的当前时间,客户端接收到该错误后再请求上一个接口,时间则传服务器刚刚返回的时间。涉及到比较重要的信息,可以用AES对value进行加密,防止抓包拉取到上传的数据。支持高并发根据实际情况选择合适的方式方法来实现,可动态通过集群节点进行扩展。例如:Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue和LinkedBlockingQueue可监控日志全覆盖正常运行信息异常捕获信息日志打印规范满足运维需求、日志格式统一规范。系统资源的动态扩展保证在充分利用系统资源的前提下,实现系统平滑的移植和扩展,同时在系统并发增加时提供系统资源的动态扩展,以保证系统的稳定性。异常处理机制表单验证、唯一性检查、或其他可预期的错误。我们需要编写特定代码来捕获这类错误,并抛出一个包含提示信息的全局异常,捕获并返回给客户端。业务扩展在进行新业务扩展时,应能提供快速、方便和准确的实现方式。接口通讯方式同步请求/应答方式客户端向服务器端发送服务请求,客户端阻塞等待服务器端返回处理结果。异步请求/应答方式客户端向服务器端发送服务请求,与同步方式不同的是,在此方式下,服务器端处理请求时,客户端继续运行;当服务器端处理结束时返回处理结果。会话方式客户端与服务器端建立连接后,可以多次发送或接收数据,同时存储信息的上下文关系广播通知方式由服务器端主动向客户端以单个或批量方式发出未经客户端请求的广播或通知消息,客户端可在适当的时候检查是否收到消息并定义收到消息后所采取的动作事件订阅方式客户端可事先向服务器端订阅自定义的事件,当这些事件发生时,服务器端通知客户端事件发生,客户端可采取相应处理。事件订阅方式使客户端拥有了个性化的事件触发功能,极大方便了客户端及时响应所订阅的事件文件传输客户端和服务器端通过文件的方式来传输消息,并采取相应处理可靠消息传输在接口通讯中,基于消息的传输处理方式,除了可采用以上几种通讯方式外,还可采用可靠消息传输方式,即通过存储队列方式,客户端和服务器端来传输消息,采取相应处理传输控制要求传输控制利用高速数据通道技术实现把前端的大数据量并发请求分发到后端,从而保证应用系统在大量客户端同时请求服务时,能够保持快速、稳定的工作状态。系统应采用传输控制手段降低接口网络负担,提高接口吞吐能力,保证系统的整体处理能力。具体手段包括负载均衡、伸缩性与动态配置管理、网络调度等功能:负载均衡有必要时为了确保接口服务吞吐量最大,接口应自动地在系统中完成动态负载均衡调度。伸缩性与动态配置管理由系统自动伸缩管理方式或动态配置管理方式实现队列管理、存取资源管理,以及接口应用的恢复处理等。网络调度当对接口有较高通讯保障要求时可能会在在双方接口之间设置多个网络通道,需要实现接口的多数据通道和容错性,保证当有一网络通道通讯失败时,进行自动的切换,实现接口连接的自动恢复。接口设计原则充分理由不是随便一个功能、需求就要加个接口。每新建一个接口,就要有充分的理由和考虑,即这个接口的存在是十分有意义额价值的,无意义的接口不仅增加了维护的难度,更重要是对于程序的可控性的大大降低,接口也会十分臃肿。单一职责一个接口只负责一个业务功能。 高内聚低耦合一个接口要包含完整的业务功能,而不同接口之间的业务关联要尽可能的小。还是查询会员的例子,有时查询会员的同时,可能该会员的相关信息要随之发生变化(如状态),如果这时一条完整的业务流水线,那么就应该在一个接口里完成,而不应再单独设立接口去操作完成。就是说一个接口不应该随着另一个变化而变化或以某几个接口为前提而存在。状态及消息提供必要的接口调用状态信息。调用是否成功如果失败,那么失败的原因是什么。这些必要的信息必须要告诉给客户端。提供必要的接口调用状态信息。调用是否成功如果失败,那么失败的原因是什么。这些必要的信息必须要告诉给客户端。控制数据量一个接口返回不应该包含过多的数据量,过多的数据量不仅处理复杂,对数据传输的压力也非常大,会导致客户端反应缓慢。过多的数据量很多时候都是接口划分不明确。禁止随意拓展参数拓展接口可能是难以避免的,但是不要随意就加参数,加参数一定是必要且有意义的,需求改变前首先应考虑现有接口内部维护是否能满足需求,而不要通过加个参数来方便自己实现需求的难度,因为参数的更变会直接导致客户端调用的变化,容易产生版本兼容性问题。接口技术主要使用的接口技术的有webService和http。接口规范域名规范每个项目要有且仅有一个自己唯一的域名(或ip地址)+端口。如果一个域名(或ip地址)满足不了要求,那么就需要再添加一个。http接口格式规范如下:“;“;webservice接口格式规范如下:,必须在路径中添加api目录格式规范如下:“;必须以字母开头,并以“/”结尾。webservice接口因为webservice本身就是专门做接口用的技术所以接口路径可以不用添加【api/】用来区分接口路径。例如:,正式版本要确定接口版本、并备份接口代码。为方便管理,需要在接口路径中加入版本号信息。http接口格式规范如下:”;必须以字母开头,并以“/”结尾。更新版本后可以使用v2v3等、依次递加。webservice接口Webservice的接口对应函数命名格式采用小驼峰式方式命名,在函数名的最后加上版本V1。更新版本后可以用V2、V3等、依次递加。API命名规范根据域名规范、API路径规范和版本控制规范。Api地址值等于三个相加。格式规范如下:“接口方法必须要有自己的规范,命名必须统一使用小驼峰命名法。比如:(upperCamelCase)。所有接口命名方式,必须遵循如下规范。新增方法如新增一个地址、新增一个联系人。命名规范:必须以“add”为前缀。例如addAddress事例地址:如获取一个地址。命名规范:必须以“get”为前缀。例如getAddress事例地址:,指明数据类型。参数中文名英文名数据类型是否必填调用方idappKeySting例如(wuzheng)时间戳timeStamplong时间戳xxxloginIdString不可为空请求参数加密方法1)对除签名外的所有请求参数按key做的升序排列,value无需编码。(假设当前时间的时间戳是)例如:有c=3,b=2,a=1三个参,另加上时间戳后,按key排序后为:a=1,b=2,c=3,_timestamp=。2)把参数名和参数值连接成字符串,得到拼装字符:a1b2c3_timestamp3)用申请到的appkey连接到接拼装字符串尾部,然后进行32位MD5加密,最后将到得MD5加密摘要转化成大写。(如果没有appkey则不需要拼接,需要加密盐时另行约定告知)示例:假设appkey=test,md5(a1b2c3_timestamptest),取得MD5摘要值C5F3EB5D7DC2748AED89E90AF00081E6。最后访问连接参照C5F3EB5D7DC2748AED89E90AF00081E6列表请求特殊规范列表请求,请求参数规范,必须传参:页数和每页个数的字段。并可包含查询等信息。1.列表接口必传字段(分页、使用小写字母)。page:页数,从1开始。例如:{“page”:1}subnumber:每页数量。2.列表接口选传字段。只要是列表接口、一般情况下都会存在检索条件,例如淘宝商品检索。检索条件为选填。后台需进行非空非null判断,选传字段为空为null默认查询全部。有值则需要接收,并进行sql查询。规范事例:普通列表接口:,不传就不检索,只进行分页查询)(如果有时间、价格等检索条件,不传就不检索,传了就进行条件查询,并返回相应数据)返回数据规范注:列表数据返回,没有特殊情况的条件下,必须最新数据在上面,依次排序。返回事例:{"list":[],"object":{},."page":1,"subnumber":10,}必选-命名规范:小驼峰命名法。必选-新增键值规则:名字对应固定的格式(list就是数组[])。比如:比如一个"list":[]满足不了需求,那么可以新增一个"map":[]。比如如一个"object":{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论