说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

别再设计易碎的Web API!

HTML文档下载 WORD文档下载 PDF文档下载
不要再设计易碎的Web API了,否则你的合作伙伴或第三方开发者会因此恨你,而离你远去的。想设计出相对稳定牢固的API,关键在于以应用目的为中心来做设计。

原文作者Mathieu Fenniak在博文中大呼:不要再设计易碎的Web API 了,否则你的合作伙伴或第三方开发者会因此恨你,而离你远去的。他认为,想设计出相对稳定、牢固的API,关键在于以应用目的为中心。文中还分享了设计优秀API需要注意的几点事项,我们一起来看下:

如果破坏了API,客户会因此而恨你

很多Web API发布后,它就像被牢牢刻在石头上无法做出兼容改变,这是个可怕的现象。倘若你破坏了API,你的客户会因此而恨你,紧接着就是你的老板。因此,你必须对该API进行更新、维护。

如果API设计的很好,那么它不会这么脆弱

减少其脆弱性或增加其韧性是管理API设计的方式之一,其关键在于以应用目的为中心做设计。也就是SOA领域,所谓的面向业务(business-orientation)。也许这个概念很难理解,下面的这个示例能很好的说明这一点:

URL之间的区别是什么呢?

http://api.fbi.gov/wanted?  order_by=notoriety,desc&  limit=10&  page=1&  fields=name,aka,known_associates,  reward,description,last_seen

这是一份来自美国联邦调查局的列表。该API包含了许多功能:你可以预定任何领域,按照升序或者降序进行排列;可以指定结果计数 ;可按页查询并且还根据指定详细信息进行检索。

对比看下这个URL:

http://api.fbi.gov/wanted/most

两个URL虽然有着相同的目标,但是执行方式不一样。第一个是名程序员设计的,他能提供任何你想要的功能。设计中没有描述用户的意图,但却利用请求定义详细信息来替代。

第二个URL意图则非常明显,显示联邦调查局头号通缉犯名单,模糊的细节,这是根据意图来进行设计的。

根据”意图“设计API,减少其脆弱性,有哪些优势呢?

  1. 易使用——没有复杂的程序、复杂的细节,易于学习;
  2. 灵活性——意向驱动API可随着服务器端的变化而变化;
  3. 一致性——一致性是API设计必备的一大特性;
  4. 松耦合——这是向后兼容性问题。你只需返回一个固定的值,后端兼容在意向驱动API中会运行的很好;
  5. 可优化——当对数据库进行更新时,可计算优化而不是在内置的需求上,这比优化每个组合的程序设计要困难得多;
  6. 可缓存——易缓存。程序员的设计使得缓存困难(正常可查询参数)和无效(比如限制=5 / 10 / 15缓存未被命中);
  7. 易开发—— 由于高复杂性使得开发和测试测试程序员的API变得更加困难和耗时。
  8. 高效验证模型缓存 — — 快速检查If-None-Match/If-Modified-Since HTTP标头并作出"304 Not Modified"响应。

但是,我需要一个更加通用的API设计……

为什么需要通用的API设计?这是因为意向会让你设计出更好的API。比如,API的灵活性。灵活的API非常有助于于开发用户界面,允许按字段排序、可自定义分页、排序和筛选或搜索。

此外,铭记UI意图,还可以提供一个易于使用、开发、灵活、一致、松耦合、可优化、可缓存和高效的API的设计决策。

DRY原则(Don’t repeat yourself)

在执行过程中不要使用重复原则,但在API设计中无须担心重复设计。如果你提供了多个API端点可根据不同意向来检索相似的对象,从常见的代码路径开始吧。 为用户提供更多具体的服务,你需要不断对API进行维护。

这个真的适用于现实的API领域吗?

这是GitHub提交的一份Status API示例,通过持续集成服务来标记存储库版本。
  1. 定义特定的功能:指定一个国家修订的版本库
  2. GitHub会自动将请求相关联的,显示在一起
  3. 无HTML 或可自定义的国家;API 有极少数量的数据需求。
  4. 面向未来:它以简约的方式满足定义的问题。
  5. 状态相关修订;提交添加更多的请求工作。
  6. GitHub 具有灵活性,可以进行更改,而不会破坏兼容性:1. 对于API,GitHub暂不支持重写功能整个请求功能;2.可适用于其他UI领域;3. 如果 GitHub变成MercurialHub、SubversionHub、PerforceHub、 CvsHub、RcsHub,API可同样被应用。
  7. GitHub灵活显示提交状态: 可在移动应用中显示状态、本地化的文本易合并。

还有个真实的例子 Twilio’s AvailablePhoneNumbers API,目的是为了搜索电话号码分配到您的账户中,这个看起来就像典型的API集合,但是细节和意图关联并不大。

总结:

综上所述,不再设计脆弱的Web API,我们得出几点:1.根据自己的意向设计API;2. 在细节上是模糊的;3.提供多个API以区分用户意向;4. 通过分享常见的实现方式而不是提供一个通用的服务来减少代码重复。

CSDN各位网友,对此,您怎么看呢?

英文出自:Mathieu.Fenniak

在运行时修改DataEnvironment的连接字符串-VB资料 在抓取資料庫之資料前先計算資料總筆數 -VB资料 增加 MsFlexGrid 的编辑功能-VB资料 真正删除数据库的记录 -VB资料 用VB制作屏幕保护程序 VB多媒体程序设计 VB设计动画时钟 VB游戏写作技巧(1)秀图篇 VB游戏写作技巧(2)网络篇 VB中播放WAV文件 VB中播放三维动画编程一例 Visual Basic 5.0多媒体创作技巧 Visual Basic 5.0中实现视频画中画 Visual Basic 中制作流水灯 Visual Basic动画编程技术 Visual Basic环境下Video/ Audio压缩数据流播放技术 Visual Basic设计多媒体应用程序 Visual Basic影音控制 Web动画图像分解在VB动画设计中的应用 播放 .flc 动画 -VB资料 播放 AVI -VB资料 播放MP3文件 -VB资料 播放背景音乐 -VB资料 播放声音文件 -VB资料 播放资源文件文件中的声音-VB资料 不用ActiveX控件也能播放声音文件-VB资料 VB创建动态图标 电影结束画面的卷动效果-VB资料 二进制操作截取VCD片断 -VB资料 非常VB测声卡 关闭屏幕保护功能,改变屏保等待时间 -VB资料 关于数据库访问的问题 资源文件的问题,MYBMP1 IS NOT FOUND 有关WINAMP 的问题? 处理字符串以修改数据库 开机显示the secondry IDE channel no 80 cable …… <input type=file name=pic>如何取值,如何设置初始值???? 么样判断一个客户机是否能够连上服务器上数据库,在线等待 在RAVE中如何加上总页数和当前页数? 有缺邮箱用的吗>?现在有了哦,穷人快来啊。。哈哈,我也是其中一个。 请问一个 应用程序登陆SQl Server 时密码的问题? 菜鸟提问! Outlook Express邮件丢失 非典嚣张的日子里的北京(希望惊起大家对SARS的关注)!!! 问一个简单的概念性问题,分却很多.......还可加哦 一个数据映射错误 关于进程通讯的问题 问一个简单的概念性问题,分却很多.......还可加哦 哪里可以找到关于OA方面的资料?越多越好,100分送上 高手请进,怎么监测到一个文件将被覆盖 请问如何屏蔽F1查看帮助的功能? 高手请进,怎么监测到一个文件将被覆盖 能提供解码器么? 在tdi中,怎样获取封包ip头? 神啊!救救我吧!!!!(在线等待) 我看SARS危机 求助 我该怎么办??? 管理登陆问题解决?? 一个简单的问题,如何对字符串进行减操作? 谁用过struts,进来交流一下! 请大侠看看俺的小程序,哪里错了(关于不规则图形填充) delphi查询问题(急需) 急求:从硬盘安装windowsxp时电脑出显不能安装,找不到eula!如何解决? 系统分析员VS博士 C#连接Oracle? 关于<BASE> 那里有WebDB下载啊. 在ListCtrl里加类似Combo Box的东西,能实现吗? windows2000下vb的一个小问题~~ 如何把当前路径加入查找路径中?立即给分! 对选用不同的纸张大小,在预览中能看出效果吗? 请问怎么在PB6.0中实现Foxpro(*.dbf)的数据导入,到ASA库中 j2me里怎么才能实现图象的滤镜效果?waiting... CDbSet m_dbSet(NULL)在哪一步才能得到一个CDatabase对象的错针? 新手提问:“镜象”是什么意思 求教,如何配置使性能达到最佳,详情见文 怎样在广域网中提高传屏响应速度?帮帮忙!急啊. 在文件钩子当中如何判断是打开文件操作,还是创建文件操作 怎样在applet程序中显示一幅jpeg图片?该图片存在于c:\image\下。 去年12月是谁发的帖子“做项目经理难么” 关于图层拖拽的问题 “协议草案”的英语是“draft agreement”还是“agreement draft”?为什么? "截距相等"用看符号吗 contract什么意思 怎样区别agreement和contract? 两直线平行是截距相等么 胡椒粉加水进入眼睛会怎样 我想问问招远金矿和山东黄金集团哪个好些? 氧化性Al3+>Mg2+>Na+,则元素金属性顺序? 如何检验正庚烷溶剂是否合格我们用正庚烷做去渍溶剂 山东招远金矿因开采造成的生态破坏 1摩尔C17H18最多与几摩尔氢气发生反应 正庚烷在70摄氏度的密度,比热容,粘度,导热率 金矿在招远的分布 这个物质最多能和几摩尔氢气发生反应?生成什么?为什么? 电子分析天平可以检测什么项目? 招远金矿事故我最大的难题就是看不到你,得不到你的消息我烦的不行 第二个问是什么意思,截距表示什么. 云母屏风烛影深指的是什么时间 天然胶乳是什么? 如何证明π是圆周率? 二次函数的截距是什么意思?怎么算还有公式啥的,求详细解释!谢谢! 什么是胶乳接枝插层法 在图书馆前站着的那些人是谁?Who are the persons ____ ____ standing in front of the library? 云母屏风烛影深的意思是什么? 胶乳的分散稳定性与什么有关 accord,pact,treaty,compact的用法与区别如题,不要到网上copy别人写的那些没有用东西.如果有用我也就不发贴了.下面我再发一下此4个同意词各自的英文注解,都出至Longman当代词典第5版.accord---a formal ‘云母屏风烛影深,长河渐落晓星沉.的意思是什么 “鬼”是磁场吗我在视频网看了一个关于灵异的节目,科学家说鬼可能是一种磁场或者说脑电波之类的,各位网友能谈谈自己的想法吗?太迷信的不要 想做离子色谱 不知道样品怎么处理 能做吗 什么能够快速产生大量二氧化碳或者能大量消耗氧气?或者说,能起到灭火作用?最好是材料低价,反应迅速,效果明显的,试验成功后可再增加赏金~ 蝴蝶为什么爱在灯下飞撞 有人用上海精科的万分之一电子分析天平么?效果怎么样我先买了一个沈阳龙腾的,计监局来检了一次不合格,换了一台,还是不合格,10g的砝码称出来9.9983g.计监局的说需要重新选个品牌,谢谢( 什么东西能与吗柠檬酸生成大量的CO2要经济点的写出公式 招远黄金节在哪举行啊 听人讲.中药也会有重金属成份? C6H4CNSCH3用重铬酸钾氧化产物是什么?CN和SCH3在苯环上是相邻的能把CN氧化成氨氮吗? 过点P(1,4)作直线与两坐标轴正半轴相交,当直线在两坐标轴上的截距之和最小时,求此直线的方程.请用截距式求解 降解中药材重金属含量的方法 云母屏风烛影深,长河渐落晓星沉的意思简单一点,越简单越好,不要太简单加上:云母屏风烛影深,深的意思,长河渐落晓星沉,长河的意思和沉的意思 第3小题,为什么 |b|0呢,还是x>=0呢,为什么 品种 莲的美食和药用 莲的名胜古迹 莲的诗文、故事、传说 I have to assume beyond any doubts that. ..这个that引导的是宾语从句还是同位语从句 为什么. 截距相等是否在符号上也要一样?比如都是正才相等,一正一负不算相等? 云母屏风烛影深,长河渐落晓星沉.的意思要句意,不要故事要这两句的句意,别的什么都不要 数学中何谓纵截距 李阳在家中吃饭时对厨房里的一瓶醋产生了兴趣,他很想知道醋的密度,于是找到了如下器材:小铁块(密度已知为ρ铁)、细线、弹簧测力计和一只足够深的水杯,他利用学过的知识,测出了醋 云母屏风烛影深 长河渐落晓星沉是什么意思 什么是自然界的蝴蝶效应 云母特性有哪些? 什么是水体富氧 山东招远怎么样 云母的特点有哪些? assume位于句子开头,引导that从句时,用什么形式 山东招远的金矿有哪些能具体的说 招远 金矿的名字 人大代表建议的写作格式 试证曲面√x+√y+√z=√a(a>0)上任何点处的切平面在各坐标轴上的截距之和等于a "agreement"和"contract"有什么异同点?I don't need MAYBE,by the way.我再自己多查查. H3AlO3,CH3COOH,C6H5OH,H2CO3,HCO3-酸性排列顺序,还有其水溶液的盐碱性排列顺序.什么什么盐类水解啦之类的,总是记不住.求大神简便的记忆方法,求理解. 过点(0,3),且在两坐标轴上截距之和等于5的直线方程是? 美一涂鸦街区将拆迁 艺术家联名告开发媒体揭秘美国监听手段:大使馆屋顶材料美无人机操作员:像僵尸一样执行任务 “罗莎”向偏西方向移动 东部地区雾霾杭州小区取消固定车位引争执 一位大伯杭州大妈100岁生日 家庭四世同堂齐法国总理呼吁民众避免使用暴力手段来解美无人机操作员:遥控飞机阿富汗杀人 杭州国际马拉松赛今天上午开跑 景区单委内瑞拉总统谴责推特强删其推特粉丝媒体揭秘美国监听手段:大使馆屋顶材料美无人机操作员:操纵飞机在阿富汗杀人美机场枪击案导致1死7伤 疑犯称对政日议员不顾禁令执意访朝 或受到处分哈里王子遭英国报刊窃听五角大楼否认美日制定“钓鱼岛共同防卫德国人在乎被美国监听吗?美驻德大使馆“近水楼台”监听默克尔 洛杉矶机场发生枪击案致1死7伤 嫌犯委总统微博掉粉 谴责国际右翼势力插手斯诺登密会德议员 称愿为NSA窃听事中国驻美使馆颁发首张10年有效期美国南昌一大学生赴缅甸赌博 欠6万赌债遭德国法兰克福股市DAX指数12日下跌欧美最新齿科技术受热捧 康贝佳看牙打铁王是怎样炼成的河北科级干部家搜出1.2亿现金林丹盼李宗伟尽快解禁回归:羽毛球需要吕薇领衔出演《锦绣过云楼》市场热点围绕改革主线上市公司青睐券商大风夜袭 热水器坠楼砸车大连小球员训练中猝死外籍医生需提供无犯罪记录证明中羽赛 人人争说李宗伟盘前操作提醒C·罗:我没骂梅西车辆起火殃及“邻居”“众筹”盖违建 藏身厂房内新增就业岗位全职仅占1/40安倍或推迟增税提前大选C·罗:我没骂梅西全路网提速达50%
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘