设计接口需要考虑的因素很多,比如接口的业务定位、接口的安全性、接口的可扩展性、接口的稳定性等。、接口跨域、接口协议规则、接口路径规则、接口单一原则、接口过滤和接口组合等诸多因素,本文将对这些因素进行简要分析。一、规范性建议1、职责原则在设计接口时,必须明确接口的职责,即接口类型,接口要解决什么业务问题。2、单一性原则在明确接口职责的情况下,尽量做到接口单一,即一个接口只做一件事,不超过两件。很多非资深的界面设计师,在设计界面的时候,总是认为界面做的事情越多越好。这是一个非常严重的误解。3、协议规范设计接口时,应明确定义接口协议。使用HTTP协议、HTTPS协议还是FTP协议要视具体情况而定。FTP协议(FileTransferProtocol,简称FTP)是一套标准的文件传输协议,用于传输文件,如.txt、.csv等,一般的文件传输都采用FTP协议。HTTP协议适用于一般对安全性要求不高或没有安全性要求的业务场景。HTTPS=HTTP+SSL,适用于对安全性要求高的业务场景。4.路径规则由于API获取的是一个资源,在URL中尽量使用名词而不是动词。/api/v1.0/pruduct/2019/api/v1.0/users/20195.http请求方法接口基本访问协议:get(获取)、post(新建)、put(修改)和delete(删除)。get/users:列出所有用户get/users/id:根据id获取用户post/user:添加新用户put/user/id:根据用户id更新用户delete/user/id:根据用户id删除用户6.域名一般域名分为主域名和专属域名。主域名适用于api长期不变或变化不大的业务,专属域名用于解决特定的专有业务。以百度为例:(1)主域名:www.baidu.com(2)百度产品和服务文库:https://wenku.baidu.com/百度知道:https://zhidao.baidu.com/百度资讯:https://zhidao.baidu.com/(三)营销活动百度公益:http://gongyi.baidu.com百度标识:http://logo.baidu.com/百度世界:https://百度世界。baidu.com7.跨域注意事项在指定域名的情况下,需要考虑接口是否跨域,以及跨域应该使用的技术手段。8、API版本接口的url,要加上版本号http://api.demo.com/v{d}/,如,其中d代表版本号,如v1.0、v2.0。示例:获取产品编号为2019,版本号为v1.0的产品信息。/api/v1.0/产品/20199。适当过滤信息当记录较多时(如SELECT*FROMTBName),添加一些条件对数据进行过滤,如TOP、分页、分组、排序、WHERE条件等。下面是一些常用的参数。limit=100:返回100条数据offset=101:从第101条数据返回page=10:参考第10页per_page=100:每页100条数据sortby=name:字段排序order=desc:降序group=groupName:Groupproduction_type=1:过滤条件10.返回数据格式返回数据格式一般包括三个字段:(1)故障状态(状态码、错误码和错误描述)。{"status":0,//状态码0-表示失败,1-表示成功"error_code":"2003",//错误码,一般在设计时定义"error_des":"authenticationfailed"//错误说明,一般在设计时定义}(2)Success(标识id,数据对象,状态码)。"sid":"sh20190111",//tokenid"users":{"id":"al201901111341",//用户id"name":"Alan_beijing",//用户名"addr":"用户地址"},"status":1//状态码0-表示失败,1-表示成功}11.安全原则考虑接口暴露、接口并发、接口防攻击、接口跨域的考虑等12.扩展性原则当在设计界面时,充分考虑界面的可扩展性。13、定义api边界任何api,从权限上来说,都可以分为匿名api和非匿名api,前者不需要验证,后者需要验证14、定义api返回码。在设计api的时候,需要设置api返回码,比如:1--授权过期404--找不到资源500--内部服务器错误600--账号被锁定该接口需要返回多个api的结果接口组合。在类似的业务场景中,设计的界面具有一定的反规范性。1.Requestdata:[{url:'api1',type:'get',data:{...}},{url:'api2',type:'get',data:{...}},]2.Responce{status:0,msg:'',data:[{status:1,msg:'',data:[]},{status:1,msg:'',data:{}}]}3例子假设有这样一个业务:一个ERP系统需要提供两个接口,一个是用户访问接口(需要验证),一个是用户注册接口(不需要验证)。根据本文第一部分和第二部分的建议,我们将设计出满足业务需求的界面。(1)定义统一参数1.定义统一输入参数2.定义统一输出参数3.定义统一错误码(2)定义接口授权类别如下定义接口授权类别(3)用户接口1.用户注册2.请求3.Responce4.codeexampleRequest:{"mobile":13636595499,"verify_code":"987654","pwd":"123456"}Responce:(1)error{"status":0,"error_code":1001,"error_desc":"手机验证码已过期"}(2)成功{"sid":"sh201901141529","uid":1,"status":1}(四)用户登录1.登录界面概览2.请求3。Responce4.CodeResponce:1.error{"status":0,"error_code":1002,"error_desc":"密码错误"}2.成功{"sid":"sh201901141529","user":{"id":1,"username":"",age:0,gender:0},"status":1}作者:Alan_beijingwww.cnblogs.com/wangjiming
