多平台统一管理软件接口,如何实现多平台统一管理软件接口
1202
2023-02-20
本文目录一览:
返回的状态码
其它开发者调用限速系统的API时,如果超过了配额,也就是请求被拒绝,那么这时应该返回429状态码,表示用户在某段时间内发送的请求过多 。通常标准的做法还会设置 retry-after 这个header,来告诉API调用者多久以后可以重试请求。
例子
HTTP/2 429
Date: Sun, 17 Jun 2018 14:43:38 GMT
retry-after: 36
自定义响应Header
除了返回状态码,还应该返回一些自定义的header来解释速率限制的情况,这会对调用API的开发者有用。这些常用的Headers包括:
例子
HTTP/1.1 200 OK
Date: Sat, 11 Nov 2017 04:37:22 GMT
Status: 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1510378642
AspNetCoreRateLimit
AspNetCoreRateLimit,它是ASP.NET Core速率限制中间件,地址是:
https://github.com/stefanprodan/AspNetCoreRateLimit
使用简介
首先在Startup的ConfigureServices里面注册,用到了MemoryCache:
这里配置的是IP限制,它允许有很多规则,这里我只用了一个:针对所有的资源,每5分钟最多3次请求。
现在,我需要注册一个策略存储和速率限制计数器的存储,这两个是被中间件使用。所以还需要注册这两个服务:
这里都使用的是Singleton单例,因为我们需要的是针对全局的请求来做操作。
接下来要在管道里添加中间件,它应该放在靠前的位置,在日志和异常之后:
测试,发送一个请求看结果:
可以看到5分钟内还剩下两次请求的配额。限制重置的时间大约在5分钟之后。
发送请求超限之后,就会返回429:
Retry-After提示了再过294秒后可以再试试。
而响应的body是这样提示的:
我们再组合几个其它的规则:
现在允许5分钟10次请求,但是每10秒钟最多只能有两次请求。
第一次请求后:
5分钟内还剩9次,然后我10秒内连续发送两次请求,然后再发送一次请求:
这时超出了限制,Header里:
提示6秒后可以重试, 6秒后再次发送请求:
基于webservice开发第三方应用程序,第三方API属于rest接口,而开发过程中难免需要测试,于是寻找测试rest接口的工具,现在主要用两种常用的工具:restclient和soupUI
一、使用restclient测试rest接口
RESTClient是一个用于测试RESTful Web services的Java客户端。
二、使用soapUI测试rest接口
虽然soapUI看上去好像是测试soap接口的,其实用它来测试rest接口未尝不可。
说明:目前只有test/xml格式成功实现,其他格式待探索。
soapUI由于目前消息体只有test/xml,multipart/form-data,application/xml,这三个选项,而在restclient工具中有几十种消息体格式,所以soapUI的使用还待进一步研究。
目前以合同添加接口为例
地址:http://adsettlement.test.360buy.com/rest/contractinfo.action
消息体类型是:text/xml,content-type=text/xml和charset=utf-8
方法是:POST
消息体:
<ContractInfo
<adsContractState0</adsContractState
<applyNo26</applyNo
<contractAmount550000</contractAmount
<contractBeginTime2012-08-13T10:55:04.336+08:00</contractBeginTime
<contractEndTime2013-08-13T10:55:04.336+08:00</contractEndTime
<contractNo20120026</contractNo
<createTime2012-08-13T10:55:04.336+08:00</createTime
<departmentNo0</departmentNo
<depositAmount120000</depositAmount
<hasDeposit1</hasDeposit
<isFrameContract0</isFrameContract
<invoiceType0</invoiceType
<isHasFrameContract0</isHasFrameContract
<isUpdatedContract0</isUpdatedContract
<plan_id0000026</plan_id
<plan_namepk</plan_name
<projectNo20120026</projectNo
<salesmanName赵玉梅</salesmanName
<settlementContractState1</settlementContractState
<AdsInfo
<parta_no7</parta_no
<parta_namezymtest7</parta_name
<partb_no14</partb_no
<partb_name京东商城</partb_name
<ads_amount280000</ads_amount
<has_deposit1</has_deposit
<deposit_amount90000</deposit_amount
<pay_account_deadline2012-10-30</pay_account_deadline
<last_charge_time2012-10-30</last_charge_time
</AdsInfo
<AdsInfo
<parta_no8</parta_no
<parta_namezymtest8</parta_name
<partb_no14</partb_no
<partb_name京东商城</partb_name
<ads_amount220000</ads_amount
<has_deposit1</has_deposit
<deposit_amount40000</deposit_amount
<pay_account_deadline2012-09-30</pay_account_deadline
<last_charge_time2012-9-30</last_charge_time
</AdsInfo
</ContractInfo
备注:其中<adsinfo可以增加,增加整个list即可
操作步骤
1、打开soapUI,创建工程
如图,右键,点击New soapUI Project
2、弹出创建工程窗口
在project name中输入工程名称,如Test,rest 接口勾选Add REST Service(这个必须勾选),点击“OK”按钮
3、弹出创建新rest服务页面,输入接口的域名地址,勾选opens dialog to create a REST Resource,点击“OK”按钮
4、弹出New REST Resource窗口,输入名称输入resource URL,点击“OK”按钮
5、弹出 New REST Method窗口,输入方法名称,选择API方法,点击“OK”按钮
6、创建请求成功,request请求页面如下
7、选择消息体格式,输入认证密码,输入消息体:
8、执行,查看执行结果:
9、在outline界面可以修改参数:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~