今天跟同事讨论起怎么做好一个内部系统,别的系统会跟这个系统进行对接。
整理如下:
1.从API上的设计原则来说,以下的问题需要考虑:
1)API的扩展性要足够好,比如说,满足A用户的同时,假设用户B有新的需求,代码改动以后,不能影响A的客户端代码。常见的扩展性比较好的格式有XML API和Json,而WSDL比较差,一旦结构改动,客户端的调用代码也必须重构。
2)API的设计要考虑性能,比如说对于核心业务,或者访问比较频繁的API应该提供Combine的功能,可以让request一起发,结果可以一起返回。
3)如果给别的系统提供的是客户端的Jar包,要考虑别的系统通常很有可能在多线程中运行,要考虑多线程并发访问的问题。
4)API的定义中,需要加入版本号
5)API的命名通常也比较重要,要简单易懂,别人一看就很轻易的看看懂。
6)同样API的设计要考虑安全性,如果这个内部系统外网需要访问,通常可以采用OAuth1.0或者2.0的规范来设计
2.从架构上来说,以下几个方面需要考虑
1)平台架构同样要具有很强的伸缩性,当访问量增加后,能够通过简单的增加server的数量,就可以达到目的。
偶尔看到一篇好文,关于外部开放API需要考虑的问题:
http://www.xoriant.com/blog/product-ideation/public-api-points-to-consider.html