ApiAgent是一个使用PHP开发的API接口代理程序,支持跨域接口代理和接口合并请求功能。
ApiAgent不光是一个接口代理项目,也可以作为类库使用。
跨域接口代理通过index.php文件访问,默认参数为url,注意需要urlencode编码。
例子:https://apiagent.toolapi.net/?url=https://www.baidu.com
(上面是在线演示地址,随时可能崩掉,正式使用时请改成你自己的!)
该接口原样返回状态码、返回头(包括cookie)、返回内容。
配置文件:Config/cross.php
接口合并请求通过batch.php文件访问,请求规则是POST提交json格式内容。
配置文件:Config/batch.php
jQuery调用样例代码:
// 设置跨域传递cookie,如果不需要可以去除$.ajaxSetup({xhrFields: {withCredentials: true},});$.ajax({// 在线演示地址,随时可能崩掉,正式使用时请改成你自己的url: 'https://apiagent.toolapi.net/batch.php',method: 'post',data: JSON.stringify({/*aip: {url: 'ip', // 在apis中预定义的接口,传别名即可getData: {ip: '218.4.255.255'},},*/aip: {url: 'https://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json',getData: {ip: '218.4.255.255'}, // 这里的IP改变也会改变下面baike的结果哦},// weather2是错误的结果,会中断/*weather2: {url: 'https://www.weather.com.cn/data/sk/1010101001.html',condition: { // 返回结果.weatherinfo不为nullvalue: '{$weather2.weatherinfo}',regular: 'is not null',},},*/baike: {url: 'https://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_length=600',// get参数getData: {bk_key: '{$aip.city}', // api接口中返回的数据.city},// post参数postData: {},// GET请求数据类型getDataType: 'form',// POST请求数据类型bodyDataType: 'form',// 自定义header,不定义则使用默认header: {'test': 'aaa',},// 验证返回结果是否正确,不正确会中断请求并返回condition: {value: '{$baike.errno}',regular: 'is not null',},},}),success: function(data){console.debug(data);}});接口合并请求返回结构{// 是否成功 "success": true,// 错误信息 "message": "",// 返回正文数据 "data": { "test": "" },// 返回结果 "result": {// 键名=>返回头数据 "test": {// 状态码 "status_code": 208,// 返回头 "header": { "Server": "squid/3.5.20", "Date": "Mon, 09 Oct 2017 07:38:54 GMT", "Content-Type": "application/octet-stream", "Content-Length": "0", "Connection": "keep-alive" },// 请求耗时 "time": 0.047 } }}预定义验证规则代码含义isnullnull===$valueisnotnullnull!==$valueemptyarray0===count($value[0])notemptyarraycount($value[0])>0truetrue===$valuefalsefalse===$value除了预定义规则,你还可以编写正则来验证。如:\d+
dataType数据类型名称含义form表单参数格式(如:a=1&b=2),默认json转为json格式提交不传默认为form,其它名称不对传递来的参数做任何处理
评论