ASP.NET Web API实践系列11,如何设计出优秀的API
本篇摘自:InfoQ的微信公众号
在设计API的时候考虑的问题包括:API所使用的传输协议、支持的消息格式、接口的控制、名称、关联、次序,等等。我们很难始终作出正确的决策,很可能是在多次犯错之后,并从中吸取经验,才能够接近正确的决策。而通过迭代的方式,只要有足够的机会,就能在API设计方面接近完美。
一个公开的API就像砖石,它是永恒不变的。(引自Joshua Block)
要知道,API的变更代价很大,并且伴随着很大的风险。但同时,破坏性的变更通常不可避免。
我们要做的是:在接口发布之前尽早迭代修复问题。也就是说,我们先设计与实现接口而不发布他们,等进行足够的审查与测试再发布。
具体来说,可以按照"草图设计→原型设计→实现"的方式去做。
草图设计
草图无需反映出整个接口,无需过于深入。API草图设计过程有一种好方法,就是定义接口中最明显的单词列表。有哪些单词是用户必须知道的?哪些单词能够最好地表达目标受众的目的与任务?通过回答这些问题,创建一份接口的词汇表。
原型设计
这个阶段对草图阶段的一些假设进行验证。一个好的原型大致是:
● 可以被调用
● 能够处理真实的请求信息
● 在必要的时候提供响应
● 开发者能够通过原型API创建出一个简单的应用
如何保证创建原型的成本低于一个完整的实现呢?
--模拟响应的消息,不是由后台系统输出响应信息,而是模拟响应信息,这种方式也称为接口的虚构(mocking)。
建立原型的目的是什么?
--为投入找到一个合适的范围,能够至此后续的迭代。
通过原型,有机会获得用户反馈,更接近最终的实现。
实现
实现是将一个原型接口转变成实际可以使用的接口。
API设计的自动化工具
● 适用于原型设计的工具:Swagger,RAML,Blueprint,WADL。
● 适用于草图设计的工具:Rapido!
ASP.NET Web API实践系列11,如何设计出优秀的API的更多相关文章
- ASP.NET Web API实践系列04,通过Route等特性设置路由
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...
- ASP.NET Web API实践系列07,获取数据, 使用Ninject实现依赖倒置,使用Knockout实现页面元素和视图模型的双向绑定
本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据. 在Models文件夹下创 ...
- ASP.NET Web API实践系列05,消息处理管道
ASP.NET Web API的消息处理管道可以理解为请求到达Controller之前.Controller返回响应之后的处理机制.之所以需要了解消息处理管道,是因为我们可以借助它来实现对请求和响应的 ...
- 如何设计出优秀的Restful API?
https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247485240&idx=1&sn=b5b9c8c41659d2 ...
- 如何设计一个优秀的API(转载)
最近在整理框架的一些 API,觉得很有必要总结一下 API 兼容性的设计.下图是我自己当下的一些总结,慢慢维护: 网上搜索了一下,一个多月前,“标点符”已经发布了下面这篇文章,觉得写得非常不错,转载于 ...
- 如何设计一个优秀的API(转)
到目前为止,已经负责API接近两年了,这两年中发现现有的API存在的问题越来越多,但很多API一旦发布后就不再能修改了,即时升级和维护是必须的.一旦API发生变化,就可能对相关的调用者带来巨大的代价, ...
- 如何设计一个优秀的API
如何设计一个优秀的API - 文章 - 伯乐在线 http://blog.jobbole.com/42317/ 如何设计一个优秀的API - 标点符 https://www.biaodianfu.co ...
- ASP.NET Web API实践系列02,在MVC4下的一个实例, 包含EF Code First,依赖注入, Bootstrap等
本篇体验在MVC4下,实现一个对Book信息的管理,包括增删查等,用到了EF Code First, 使用Unity进行依赖注入,前端使用Bootstrap美化.先上最终效果: →创建一个MVC4项目 ...
- ASP.NET Web API实践系列09,在Fiddler和控制台中模拟GET和POST请求
ASP.NET Web API本质是由一个进程托管的一组类,需要宿主,这个宿主可以是ASP.NET应用程序,可以是MVC项目,可以是控制台应用程序,也可以是自己定制的宿主. 在VS2012中创建一个& ...
随机推荐
- 激活Window和office工具
激活Window和office工具: 第一种工具(已使用工具激活microsoft office professional plus 2013版本): 暴风激活工具(暴风激活工具 ...
- WEBAPI 帖子收藏
[翻译]ASP.NET Web API入门 [翻译]ASP.NET WEB API异常处理 ASP.NET WebAPI 路由规则与POST数据 ASP.NET Web API路由规则(二) ASP. ...
- 005_系统运维之SLA与SLO的关系
服务水平协议(简称:SLA,全称:service level agreement)是在一定开销下为保障服务的性能和可靠性,服务提供商与用户间定义的一种双方认可的协定.通常这个开销是驱动提供服务质量的主 ...
- 创建.symlnk文件
本文转自:https://zhidao.baidu.com/question/1695955535823679548.html 1 2 3 4 5 6 7 8 9 10 11 创建符号链接. MK ...
- ASP.NET Web配置使用HTTPS实用案例
Step by Step 配置使用HTTPS的ASP.NET Web应用 有关HTTPS.SSL以及SSL证书的工作原理,参见 <HTTPS那些事(一)HTTPS原理> <HTTPS ...
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning(转)
参考:http://blog.csdn.net/xbinworld/article/details/45619685
- linux开启远程访问端口
开启3306端口的tcp访问权限 /sbin/iptables -I INPUT -p tcp -dport 3306 -j ACCEPT 保存防火墙信息 /etc/rc.d/init.d/iptab ...
- python3.6连接oracle数据库
下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Oracle/5.2.1#downloads 这里下载的是源码进行安装 [root@oracle or ...
- NOIP 2000 计算器的改良
题面 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先生. 为 ...
- Selenium Books
Recently, some of my projects rely heavily upon tests with selenium. Some books about selenium are c ...