关于Web应用API设计的一些想法和实践

来源:互联网 发布:nginx 反向代理配置 编辑:程序博客网 时间:2024/05/16 07:05

   最近在做项目,因为需求变动,需要修改多个API接口,因而对此有了一些想法,在同事的建议和讨论下,对API的设计理念有了重新的思考和认知,谨以此文记之。

   Api设计要点:

   个人认为API设计的几个核心要素在于:简单适用,安全,统一。

   简单适用:涉及几个方面,开发过程简单化,使用者用起来的时候不会费劲。假如你的API接口实现起来极其困难(需求之外的因素导致的),那你就需要重新考虑你的设计方案是否合理;假如你快速实现了接口,但是别人调用的时候不知道如何调用或者不能快速调用你的接口,那你的接口就不够简单,除了减少不必要的程序复杂度之外,你还需要有一份详细的接口文档让别人参看。开发文档要简单易懂,最好要有示例,对于每个接口对应的参数和对应的值意义要描述清楚,接口的返回参数也要清晰明了的表示出来。

   安全是必不可少的:即便你的程序写满了各种校验,最后还是逃脱不了因为漏洞和恶意的程序访问攻击导致的致命错误,所以为了保证你的api是安全的,一定要做好安全工作,哪怕是简单的签名md5也ok;

   统一:说到统一, 可能是件比较痛苦的事情。因为似乎“统一”太困难。做web开发的时候,最简单的方式就是哪里需要我给提供接口了,那就做一个页面出来,快速搞定;久而久之,外部系统调用的API越多,你的接口也就越来越多,即便你把这些页面放在一个路径下(如果是多个人一起开发,这简直是不可能完成的任务),依旧显得乱乱的。好一点的API设计思路是,我们只给外部用户提供一个统一的http接口,然后在接口参数中指定需要调用哪个服务的接口,这样使用方看着明白,也便于我们后台管理。

   但是统一并不是那么简单的事情,因为我们要在这个统一的接口中做一件重要的事情:“动作转发”。最恶劣的Dispatcher实现方式是一堆的条件判断逻辑(但是至少做到统一了),作为程序员的我们似乎不能容忍自己如此堕落,我们需要设计一个好的Dispatcher框架来实现动作的转发工作。其实也很简单,只要配置好统一接口中的key和真正的行为(class& method)就可以了。

原创粉丝点击