多平台统一管理软件接口,如何实现多平台统一管理软件接口
1045
2023-03-05
本文目录一览:
一些刚开始写接口文档的服务端同学,很容易按着代码的思路去编写接口文档,这让客户端同学或者是服务对接方技术人员经常吐槽,看不懂接口文档。这篇文章提供一个常规接口文档的编写方法,给大家参考。
推荐使用的是docway 写接口文档,方便保存和共享,支持导出PDF MARKDOWN,支持团队项目管理。
一、请求参数
1. 请求方法
GET
用于获取数据
POST
用于更新数据,可与PUT互换,语义上PUT支持幂等
PUT
用于新增数据,可与POST互换,语义上PUT支持幂等
DELETE
用于删除数据
其他
其他的请求方法在一般的接口中很少使用。如:PATCH HEAD OPTIONS
2. URL
url表示了接口的请求路径。路径中可以包含参数,称为地址参数,如**/user/{id}**,其中id作为一个参数。
3. HTTP Header
HTTP Header用于此次请求的基础信息,在接口文档中以K-V方式展示,其中Content-Type则是一个非常必要的header,它描述的请求体的数据类型。
常用的content-type:
application/x-www-form-urlencoded
请求参数使用“”符号连接。
application/json
内容为json格式
application/xml
内容为xml格式
multipart/form-data
内容为多个数据组成,有分隔符隔开
4. HTTP Body
描述http body,依赖于body中具体的数据类型。如果body中的数据是对象类型。则需要描述对象中字段的名称、类型、长度、不能为空、默认值、说明。以表格的方式来表达最好。
示例:
二、响应参数
1. 响应 HTTP Body
响应body同请求body一样,需要描述请清除数据的类型。
另外,如果服务会根据不同的http status code 返回不同的数据结构, 也需要针对不同的http status code对内容进行描述。
三、接口说明
说明接口的应用场景,特别的注意点,比如,接口是否幂等、处理是同步方式还是异步方式等。
四、示例
上个示例(重点都用红笔圈出来,记牢了):
五、接口工具
推荐使用的是http://docway.net(以前叫小幺鸡) 写接口文档,方便保存和共享,支持导出PDF MARKDOWN,支持团队项目管理。
返回结果
调用 API 服务后返回数据采用统一格式api接口状态码文档,返回的 HTTP 状态码为 2xx,代表调用成功;返回 4xx 或 5xx 的 HTTP 状态码代表调用失败。调用成功返回的数据格式主要有 XML 和 JSON 两种,外部系统可以在请求时传入参数来制定返回的数据格式,默认为 XML 格式。本文档中的返回示例为api接口状态码文档了便于用户查看,做了格式化处理,实际返回结果是没有进行换行、缩进等处理的。
成功结果:
错误结果
调用接口出错后,将不会返回结果数据。调用方可根据每个接口对应的错误码以及下述 2.3.3 的公共错误码来定位错误原因。当调用出错时,HTTP 请求返回一个 4xx 或 5xx 的 HTTP 状态码。返回的消息体中是具体的错误代码及错误信息。另外还包含一个全局唯一的请求 ID:RequestId 和一个您该次请求访问的站点 ID:HostId。在调用方找不到错误原因时,可以联系阿里云客服,并提供该 HostId 和 RequestId,以便api接口状态码文档我们尽快帮您解决问题。
公共错误码
错误代码
描述
Http 状态码
语义
MissingParameter The input parameter “Action” that is mandatory for processing this request is not supplied 400 缺少 Action 字段
MissingParameter The input parameter “AccessKeyId” that is mandatory for processing this request is not supplied 400 缺少 AccessKeyId 字段
MissingParameter An input parameter “Signature” that is mandatory for processing the request is not supplied. 400 缺少 Signature 字段
MissingParameter The input parameter “TimeStamp” that is mandatory for processing this request is not supplied 400 缺少 Timestamp 字段
MissingParameter The input parameter “Version” that is mandatory for processing this request is not supplied 400 缺少 Version 字段
InvalidParameter The specified parameter “Action or Version” is not valid. 400 无效的 Action 值(该 API 不存在)
InvalidAccessKeyId.NotFound The Access Key ID provided does not exist in our records. 400 无效的 AccessKeyId 值(该 key 不存在)
Forbidden.AccessKeyDisabled The Access Key is disabled. 403 该 AccessKey 处于禁用状态
IncompleteSignature The request signature does not conform to Aliyun standards. 400 无效的 Signature 取值(签名结果错误)
InvalidParamater The specified parameter “SignatureMethod” is not valid. 400 无效的 SignatureMethod 取值
InvalidParamater The specified parameter “SignatureVersion” is not valid. 400 无效的 SignatureVersion 取值
IllegalTimestamp The input parameter “Timestamp” that is mandatory for processing this request is not supplied. 400 无效的 Timestamp 取值(Timestamp 与服务器时间相差超过了 1 个小时)
SignatureNonceUsed The request signature nonce has been used. 400 无效的 SignatureNonce(该 SignatureNonce 值已被使用过)
InvalidParameter The specified parameter “Action or Version” is not valid. 400 无效的 Version 取值
InvalidOwnerId The specified OwnerId is not valid. 400 无效的 OwnerId 取值
InvalidOwnerAccount The specified OwnerAccount is not valid. 400 无效的 OwnerAccount 取值
InvalidOwner OwnerId and OwnerAccount can’t be used at one API access. 400 同时使用了 OwnerId 和 OwnerAccount
Throttling Request was denied due to request throttling. 400 因系统流控拒绝访问
Throttling Request was denied due to request throttling. 400 该 key 的调用 quota 已用完
InvalidAction Specified action is not valid. 403 该 key 无权调用该 API
UnsupportedHTTPMethod This http method is not supported. 403 用户使用了不支持的 Http Method(当前 TOP 只支持 post 和 get)
ServiceUnavailable The request has failed due to a temporary failure of the server. 500 服务不可用
UnsupportedParameter The parameter ”” is not supported. 400 使用了无效的参数
InternalError The request processing has failed due to some unknown error, exception or failure. 500 其他情况
MissingParameter The input parameter OwnerId,OwnerAccount that is mandatory for processing this request is not supplied. 403 调用该接口没有指定 OwnerId
Forbidden.SubUser The specified action is not available for you。 403 无权调用订单类接口
UnsupportedParameter The parameter ”” is not supported. 400 该参数无权使用
Forbidden.InstanceNotFound The specified Instance is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Instance 不存在
Forbidden.DiskNotFound The specified Disk is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Disk 不存在
Forbidden.SecurityGroupNotFound The specified SecurityGroup is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 SecurityGroup 不存在
Forbidden.SnapshotNotFound The specified Snapshot is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Snapshot 不存在
Forbidden.ImageNotFound The specified Image is not found, so we cann’t get enough information to check permission in RAM. 404 使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Image 不存在
Forbidden.RAM User not authorized to operate the specified resource, or this API doesn’t support RAM. 403 使用了 RAM 授权子账号进行资源访问,但是本次操作没有被正确的授权
Forbidden.NotSupportRAM This action does not support accessed by RAM mode. 403 该接口不允许使用 RAM 方式进行访问
InsufficientBalance Your account does not have enough balance. 400 余额不足
IdempotentParameterMismatch Request uses a client token in a previous request but is not identical to that request. 400 使用了一个已经使用过的 ClientToken,但此次请求内容却又与上一次使用该 Token 的 request 不一样.
RealNameAuthenticationError Your account has not passed the real-name authentication yet. 403 用户未进行实名认证
InvalidIdempotenceParameter.Mismatch The specified parameters are different from before 403 幂等参数不匹配
LastTokenProcessing The last token request is processing 403 上一次请求还在处理中
InvalidParameter The specified parameter is not valid 400 参数校验失败
这个问题还是从需求、测试用例设计、执行来说吧。
首先要了解这个接口提供的服务的需求定义,那么我们就知道大概测试的结果是啥。同时理论上要先提供接口规范,方便后续测试,以及给调用者联调的一个文档约定。
根据测试的接口规范,基于业务进行场景设计,再结合边界值设计方法、等价类划分等常用设计方法进行用例设计。
1.设计的方向是常规的测试用例设计:协议规范测试、接口入参、接口出参。
协议规范测试:比如HTTP协议:URL地址、Header测试。不过一般情况下,默认调用者按照接口规范正常调用。这个不用过于详细测试。
2.接口入参:参数个数测试(注意是否必传字段),参数值测试(为空、正常值、非法值等,以及首尾有空格是否过滤)。
3.接口出参:至少涵盖一条成功的响应和一条失败的响应,当然我们测试出更多错误码,我们的覆盖率也就更全面。
4.业务场景用例: 这个需要你对于这个接口的业务的了解程度,而且这是最重要的部分。
比如中间使用了缓存服务(第一次缓存没有,是不是直接读数据源,并存入缓存;第二次直接读取缓存是否正确);
比如需要考虑请求外部的接口获取相应的信息的时间损耗(连接不上外部接口,外部接口下线了,外部接口响应太慢);
1.需要你对接口协议有一定的了解,选择适当的开源工具(如postman)或者自己编写脚本进行模拟请求。
2.需要熟悉接口所使用的中间件等知识(比如redis、kafka、mysql数据库)。
3.需要模拟外部接口返回给你现在正在验证的程序的接口。(比如扣费业务,你不可能每测一个业务,就去调真实扣费)。
是web开发接口吗?建议使用Postman
一、什么是接口?
接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
二、 常用接口采用方式:
1、webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有apipost、jmeter、loadrunner等;
2、http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和
post等方法,这也是最常用的两种请求方式。可以使用的工具有apipost、jmeter、loadrunner等;
三、前端和后端
前端:网站前端是对网页静态页面的设计,通俗的来说,就是我们肉眼能看的到的东西,当我们浏览网站的时候所看到的页面上的内容几乎都是属于前端,前端的工作就是网站页面,静态的页面是没有后端成分的,前端主要包括html和css外加js等一些样式和布局。
后端: 网站的后端就是动态网站的技术,比如网站上的一些注册登录和一些弹窗,这些都是后端的逻辑,常用的后端语言有php,jsp等,后端的数据库也包含myspl等,都是对后端进行存储数据。
四、 接口测试概念
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等(通俗来说就是,检查业务逻辑是否满足业务需求,校验字段是否正常你实际结果是否满足预期)
五、 接口的组成:
a、接口说明
b、调用url
c、请求方法(getpostput等)
d、请求参数、参数类型、请求参数说明
e、返回参数说明
六、为什么要做接口测试,接口测试的目标
接口其实app和前端交互用的,所以好多人问,为啥做功能测试还要测接口,目标是啥不是多此一举吗?首先我告诉大家,这种想法是错误的
那么举一个例子:
例如一个登陆接口,例如产品上规定用户名6-10个字符数字下划线,但后端没做判断。但我们业务人员测试肯定验证,但只是前端做了校验,后端压根就忘了这个小需求.那么后果来了如果一个懂的直接抓包去篡改你的接口,然后绕过校验,通过sql注入直接随意登录。如果你这是一个下单业务,是不是给公司造成了很大损失
所以此时此刻接口测试目标来了:
1.可能发现客户端没有发现的bug(那么也叫隐藏bug)
2.及早爆出风险(保证质量正常上线)
3.接口稳定了,前端随便改
4.最重要检查系统安全性,稳定性
七、如何进行接口测试
1.使用接口测试工具进行测试,接口测试和接口文档生成工具apipost,接口测试和性能测试工具jmeter
2.接口状态码表示含义
例如:200(成功)/300(重定向别的地方)/400(请求语法错误)/500(服务器异常)
测试点:
B. 参数组合(传入不同值)
C. 接口安全(绕过验证/绕过身份验证/参数是否加密等)
D. 异常验证(输入异常参数边界值)
练
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~