开放api已经成为了一个趋势。简单地说,就是一个很大的网络公司想做成平台化,开放自己的编程接口,让公司以外的力量利用api开发更多的应用。像windows api,msn api,facebook api,skype api,google searach api等等。国内主要有taobao,校内,开心等等。由于对电子商务的兴趣,我关注了下taobao的api以及基于taobao api开发的网站。发现了一个问题,taobao的api不是很稳定,主要是taobao经常变动自己的api,调用方式发生变化,api其实可以理解函数调用,或者方法调用,一旦网络公司变动自己的api,基于api的程序就得跟着变化。常常看见很多基于api开发应用无法使用。这种情况下,基于api开发的程序只有时时注意api变动情况。
下面我们对taobao这样的网络公司提出建议:最好以兼容的模式变动api,不要一来就改掉api,老的api直接失效。这样对于api开发者来说,是很粗暴的。像浏览器,操作系统,网络协议都是采用向下兼容的模式,出了新的更好的,更正了错误,不要一来就换掉,应该让出一段时间让开发者可以去改他们相应的程序。既是做平台,就要和开发者互惠互利,对开发者不友好,少人基于api开发,开放api也就失去意义,还不如转型做像apple那样的封闭公司。这个网络公司未必会接受,因为Weng叫你做一件事和你叫Weng做一件事的结果是不一样的。
作为开发者,应该做点积极的事。建议一直坚持一个原则:决不直接在代码中对api调用!应该将api写成自己的api,就是用网络公司的api(认为是函数吧),重写成自己的函数。对网络络公司的api都封装一下形成调用网络api的自己的底层代码。开发程序时调用自己的api。如果网络公司改变了api,只需修改一次底层的api就可,即修改一处对网络公司api调用的代码部分就可以了(你重写成的自己的api代码部分),完全不用修改你的程序。网络公司的api并没有嵌入你的程序,是分离的,也很容易的查找并修改。
很多的api开放方式都是调用api,网络公司的服务器返回xml文件,你在客户端解析。其实有实力的开发者完全可以基于现有的各种api写成一个客户端,形成一个自己的产品,有人说,这个适合大公司做,因为这个可复制性太强了,没有壁垒,只有实力和金钱资源才能做下去。其实我倒认为很适合创业者做,因为很多api的底层你做不了,你现在做现成的调用,就可以形成自己应用,应该说是站在巨人肩上。一个页面的js代码就可以用google api,bing api开发一个自己的搜索引擎。而要开发一个google这样的搜索引擎的核心算法,后端部署,全世界只有google一家。