eolinker开源版5(开源 ethercat)
eolinker开源版本页面请求是不是有延时请求?
我也在用eolinker,目前没有发现有延时的问题,按照你的问题,可能是以下原因导致的
1.pdo扩展的版本比较旧
2.mysql的版本比较旧
3.pdo和mysql的版本不匹配
另外可以将mysql的配置路径从localhost改为127.0.0.1
五大接口管理平台比较
本人程序猿一枚,多年来深陷接口管理的漩涡中,闲来无事的时候,把现有开放的接口管理平台仔细捋了一遍,整理出来分享给大家,各位看官各取所需,都别客气哈。
Eolinker
这是在所有接口管理平台中我觉得做的最好的一个了,首先功能齐全,基本上其他平台上有的,eolinker都具备了,从项目管理到接口管理,支持团队协作,接口测试,版本管理,在线分享,导入导出等等,十分强大,而且功能虽多,界面却很干净整洁,体验也很棒,强烈推荐!
接口详情页,信息完备,接口信息一览无余,还可以随时切换测试,mock,历史,修改,顺便说一句,这里的测试功能支持在线和本地测试(需要下插件),甚至可以构造表达式,想先怎么处理数据都行,超极好用!
除此之外,eolinker甚至还集成格式转换,编码转换,加密解密等等的小工具。如果担心接口数据安全,还可以直接从官网上下一个开源版本安装到本地,不过功能就没有线上的那么强大了,但是基本需求都能满足。讲道理,功能强大到这个地步我是服气的。
RAP
从接口管理的功能上来说,相对eolinker来说就有一些逊色了,文档信息不够详细,团队协作那块第一次用的时候我真的是完全懵逼了,而且界面真的是有些简陋(感觉像是后台开发人员写的界面),不过接口管理的基本功能都有,支持版本管理,mock测试,导入导出,而且是开源的,文档也比较详细,大家有时间的话可以以此为基础开发自己想要的功能咯。
easyAPI
在接口文档方面,虽然比起eolinker来说还是相对简单,不过对于那些喜欢简单接口文档的朋友来说,easyAPI也不失为一个不错的选择,不过在我试用的过程中,界面好像不是很稳定,有些按钮点击时没有反应,图标时可见时不可见。而且因为接口文档和接口测试不是在一个菜单之下的,两个功能之间的转换有些费力。
不过接口测试的功能还是挺不错的,左边填数据,右边显示结果,感觉还是挺直观的,如果能支持本地测试就更好啦。
EasyAPI在主菜单上还有一个接口监控的按钮,不过点击之后页面为空,似乎一个很牛逼的功能——可能是我打开的方式不对吧,另外还有一个网关的功能,据说可以帮助开发者轻松创建、发布、维护、监控和保护任意规模的API,需要购买才能使用,大家如果感兴趣的话可以试试。
Apizza
用过DHC的朋友应该会觉得apizza的界面似曾相识,用户在编辑接口的同时也可以进行接口测试,很方便也很简单,如果只是想使用接口管理平台进行接口管理和接口测试的朋友,apizza不失为一个不错的选择,功能虽不强大,但十分轻巧简单。
showDoc
比起其它接口管理平台,showDoc更像一款支持在线分享的文档工具,直接给用户提供一个富文本编辑器,想要什么格式的自己编写,简单粗暴。这样的话虽然管理接口的时候相对麻烦,但是拓展性挺强,它给个平台,我们想分享什么都行,会议记录啊,项目信息啊,下班后哪吃饭啊...不过相对来说,测试功能就不怎么好用了,有得有失吧,看大家想用来做什么咯。
以上5款接口管理工具的简单介绍完啦,希望对大家有所帮助~
eolinker可以导出api文档吗
你用库函数 肯定头文件在开甫盯颠故郯嘎奠霜订睛始啊,因为要看到函数声明,编译器才能确定函数符号表,以使编译过程进行去。 对于库,现在基本都是动态库,以windows为例,它们都是PE文件,关键是导出表的符号名。这个是要写入生成的PE文件的,因为程序有pe loader加载的时候,需要知道使用的导出函数的名,以便确认库函数的实际虚拟内存地址。 这个过程是链接,链接技术不只是简单的在编译后的链接,还指运行时的链接,因为库是有链接器 linker来完成的,所以在源码中写在哪里都好了。。一般都是写在头上 比如 #pragma comment(lib, "ws2_32.lib")
API函数的声明文件,一般在VC的include目录中,一般加上 windows.h就差不多了,但是有些函数 比如ShellExecuteEx,这个就需要shellapi.h头文件,具体则需要查询MSDN。
函数的代码,都在DLL文件。正是因为此,很多高手都会查询DLL文件的导出函数,以便发现MSDN没有的函数。。
保障接口安全的5种常见方式
一般有五种方式:
1、Token授权认证,防止未授权用户获取数据;
2、时间戳超时机制;
3、URL签名,防止请求参数被篡改;
4、防重放,防止接口被第二次请求,防采集;
5、采用HTTPS通信协议,防止数据明文传输;
所有的安全措施都用上的话有时候难免太过复杂,在实际项目中需要根据自身情况作出取舍,比如可以只使用签名机制就可以保证信息不会被篡改,或者定向提供服务的时候只用Token机制就可以了,如何取舍,全看项目实际情况和对接口安全性的要求。
HTTP协议是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的,但是对我们有权限访问限制的模块而言,它是需要有状态管理的,以便服务端能够准确的知道HTTP请求是哪个用户发起的,从而判断他是否有权限继续这个请求。
Token的设计方案是用户在客户端使用用户名和密码登录后,服务器会给客户端返回一个Token,并将Token以键值对的形式存放在缓存(一般是Redis)中,后续客户端对需要授权模块的所有操作都要带上这个Token,服务器端接收到请求后进行Token验证,如果Token存在,说明是授权的请求。
Token生成的设计要求:
1、应用内一定要唯一,否则会出现授权混乱,A用户看到了B用户的数据;
2、每次生成的Token一定要不一样,防止被记录,授权永久有效;
3、一般Token对应的是Redis的key,value存放的是这个用户相关缓存信息,比如:用户的id;
4、要设置Token的过期时间,过期后需要客户端重新登录,获取新的Token,如果Token有效期设置较短,会反复需要用户登录,体验比较差,我们一般采用Token过期后,客户端静默登录的方式,当客户端收到Token过期后,客户端用本地保存的用户名和密码在后台静默登录来获取新的Token,还有一种是单独出一个刷新Token的接口,但是一定要注意刷新机制和安全问题;
根据上面的设计方案要求,我们很容易得到Token=md5(用户ID+登录的时间戳+服务器端秘钥)这种方式来获得Token,因为用户ID是应用内唯一的,登录的时间戳保证每次登录的时候都不一样,服务器端秘钥是配置在服务器端参与加密的字符串(即:盐),目的是提高Token加密的破解难度,注意一定不要泄漏;
客户端每次请求接口都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,如果时间差大于一定时间(比如:1分钟),则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段。
写过支付宝或微信支付对接的同学肯定对URL签名不陌生,我们只需要将原本发送给server端的明文参数做一下签名,然后在server端用相同的算法再做一次签名,对比两次签名就可以确保对应明文的参数有没有被中间人篡改过。
签名算法:
1、首先对通信的参数按key进行字母排序放入数组中(一般请求的接口地址也要参与排序和签名,那么需要额外添加url= 这个参数);
2、对排序完的数组键值对用进行连接,形成用于加密的参数字符串;
3、在加密的参数字符串前面或者后面加上私钥,然后用md5进行加密,得到sign,然后随着请求接口一起传给服务器。
注意: 对于客户端的私钥一定要妥善处理好,不能被非法者拿到,如果针对于H5的项目,H5保存私钥是个问题,目前没有更好的方法,也是一致困扰我的问题,如果大家有更好的方法可以留言一起探讨。
客户端第一次访问时,将签名sign存放到服务器的Redis中,超时时间设定为跟时间戳的超时时间一致,二者时间一致可以保证无论在timestamp限定时间内还是外 URL都只能访问一次,如果被非法者截获,使用同一个URL再次访问,如果发现缓存服务器中已经存在了本次签名,则拒绝服务。如果在缓存中的签名失效的情况下,有人使用同一个URL再次访问,则会被时间戳超时机制拦截,这就是为什么要求sign的超时时间要设定为跟时间戳的超时时间一致。拒绝重复调用机制确保URL被别人截获了也无法使用(如抓取数据)。
方案流程:
1、客户端通过用户名密码登录服务器并获取Token;
2、客户端生成时间戳timestamp,并将timestamp作为其中一个参数;
3、客户端将所有的参数,包括Token和timestamp按照自己的签名算法进行排序加密得到签名sign
4、将token、timestamp和sign作为请求时必须携带的参数加在每个请求的URL后边
5、服务端对token、timestamp和sign进行验证,只有在token有效、timestamp未超时、缓存服务器中不存在sign三种情况同时满足,本次请求才有效;
众所周知HTTP协议是以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了客户端和服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为客户端和服务器之间的通信加密。
HTTPS也不是绝对安全的,如下图所示为中间人劫持攻击,中间人可以获取到客户端与服务器之间所有的通信内容。
中间人截取客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信;将服务器返回给客户端的内容发送给客户端,伪装成服务器与客户端进行通信。 通过这样的手段,便可以获取客户端和服务器之间通信的所有内容。 使用中间人攻击手段,必须要让客户端信任中间人的证书,如果客户端不信任,则这种攻击手段也无法发挥作用。
针对安全性要求一般的app,可采用通过校验域名,证书有效性、证书关键信息及证书链的方式。
以上说的更多是设计阶段的思路,如果API已经在运行的话,我们则需要通过其他方式,如API网关工具来保护我们的API,这里推荐的是Eolinker,对于上述的5个方面,都有对应的功能做到保护API,可以自己部署开源版本试用一下:
Api接口管理工具推荐
在App开发过程中少不了跟服务端打交道,各种HTTP接口调试、返回数据处理占据了不少开发时间,一款好的接口管理工具就非常有必要了。接口管理工具一方面起到链接后台开发人员和App开发人员的作用,另一方面也可以作为传统的接口文档使用,且比文档的实时性更强。
因为各个团队的情况不太一样,可能对接口管理有不一样的需求,目前有不少接口管理工具,足以覆盖不同团队的需求,下面来简单介绍一下。
1. YApi
YApi是由去哪网前端团队开源的一款接口管理工具,功能强大,可以轻松的自己部署。而且支持使用docker部署,使用成本很低了。
使用docker部署可以参考这篇文章:
2. Rap2
Rap2是由阿里妈妈前端团队开源的一款接口管理工具,相对YApi来说,至少文档上面差一些,Github上没有太多介绍,也没提及用docker部署,但也是一个选择吧。
3. eolinker
eolinker是一个接口管理服务网站,如果不想自己部署YApi、Rap2的团队可以使用,免费版的功能对于小型团队来说足够了。
4. Postman
跨平台的管理工具,可以免费使用,支持mock,支持团队协作,免费版本的限制主要在于每个月1000次的限制,包括Mock请求、API请求等等,对于小型团队(3~5人)应该是足够了。
5. Paw
仅支持Mac平台,可以试用30天,正式版要49.99美元,不是特别推荐使用,毕竟不能跨平台。
以上几个都能满足我们对于接口管理的需求,综合来看,多数团队可以直接使用eolinker提供的服务,Postman也可以,但是考虑到国内的网络情况并不推荐。对于有一定技术实力的团队可以使用YApi、Rap2,自己部署,甚至二次开发满足团队需求。