一、关于API
狭义上API可能只是一个动态库(共享库)提供功能的接口定义。广义上API分为public API,以及internal API之分。既有整体软件系统对外输出的接口(包括与设备通讯的接口),也有系统内一个底层模块提供给上层模块使用的接口定义。
API看似简单的名词,却代表着重要的架构设计。从架构设计的角度来看(所谓的组成论),软件系统就是模块和接口。模块(层次/组件)决定分工,接口决定交互。API就是接口的定义。模块间并不需要关心其它模块的实现,只需要了解如何进行协作即可。这样将复杂度分散到各个模块之中,使得整体系统更为可控。
API的本质,就是提供给模块开发者使用的接口,是给”人(Programmer)”用的。API的设计任务的核心就是保证使用者以较低的成本,正确的使用接口,驱动模块完成他们的业务。对于Public API,最大的设计挑战则是如何把API一次就做对!
二、怎么样设计API
参考书籍《软件框架设计的艺术》
参考资料
1.Github的API,https://developer.github.com/v3/
2.客户端与服务器的接口设计原则RESTfull,https://en.wikipedia.org/wiki/Representational_state_transfer
3.软件框架设计的艺术 (Jaroslav Tulach, NetBeans)
4.Little Manual of API Design (Jasmin Blanchete, Qt)
5.Preserving Backward Compatibility (Garrett Rooney, Subversion)
6.API Design Principles (Qt Wiki)
7.How to design a good API and Why it matters (Google)
8.《API的设计与实现》,http://blog.csdn.net/horkychen/article/details/46612899