关于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)就可以了。
- 关于Web应用API设计的一些想法和实践
- 关于设计的方法和一些想法
- 关于Web API 版本控制的一些想法
- web 自动化测试框架的一些想法和实践
- 关于“业界最佳实践”的一些想法
- 关于面向对象和设计模式的一些想法
- 关于产品定义、架构和设计实现的一些想法
- 关于 Apple Metal API 的一些想法
- 关于 Apple Metal API 的一些想法
- 关于 Rich Client 应用的一些想法
- 关于 设计模式的一些想法
- 关于系统设计的一些想法
- 关于iOS应用设计的一些最佳实践
- 关于iOS应用设计的一些最佳实践
- 关于iOS应用设计的一些最佳实践
- 关于iOS应用设计的一些最佳实践
- 关于iOS应用设计的一些最佳实践
- 关于iOS应用设计的一些最佳实践
- Oracle11gR2 for Linux 静默安装笔记
- 如果要在文件中写入空行,可以使用哪些方法?
- Yui Compressor Java压缩实践
- ON_COMMAND_EX ON_COMMAND
- 9i/10g/11g rac on linux
- 关于Web应用API设计的一些想法和实践
- 算法导论P85 快速排序
- 在ARM Linux上成功实现添加DNS库
- JavaScript基本知识
- 使用java.awt包 对图片进行大小调整
- SoEngine realTime create a realtime clock
- Siebel HOW TO: How to change log level in command-line
- linux GetLocalTime
- PHP类的自动加载__autoload && spl_autoload_register