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

别再设计易碎的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

趣味撞球VB5应用程序一例 VB如何从"SOUND.DRV"中提取声音 VB如何设定墙纸的显示方式? VB如何用API及MMSYSTEM.DLL播放AVI文件 VB如何知道计算机是否安装声卡? 设计简单的屏幕保护程序 -VB资料 使机箱内的小喇叭发出不同的声音 -VB资料 使用VB设计具有「动感」的命令图标栏 五彩缤纷的清屏效果-VB资料 系统是否支持声音 -VB资料 一个实用的VB屏幕程序 一个自动更换墙纸的小软件-VB资料 VB用 VB 设 计 VCD 播 放 器 VB用API播放 .wav 声音文件 VB用MCI指令进行多媒体编程 用VB5.0编写自己的MP3播放器 用VB6.0编写电脑抽奖程序 用VB6的双通道技术获得影碟片断 用VBScript制作活动主页 用VB编写DirectX7.0游戏(下) 用VB编写FLASH动画播放器 用VB设计VCD播放器 用VB实现队列播放MP3 用VB实现屏幕滚屏保护效果 用VB制作下雪的特技景象 用VB自制屏幕保护程序 用Visual Basic实现多画面播放功能 雨滴式的显示图片 -VB资料 在VB5.0中制作多媒体界面 在VB5中将英文字母及阿拉伯数字旋转任意角度 在VB5中如何使机箱内的小喇叭发出不同的声音? xpmenu控件的使用! 招聘的故事 请问谁有《Visual C++ MFC 编程实例》这本书的配套源代码?(在线等) 如果我数据库里有一篇文章 怎么格式化她????? isapi中用ado访问数据库只能读不能写,何故?相同的代码在exe中可以 在对话框中建立一个socket连接,如何在释放对话框之后保存这个连接以备以后使用? 关于屏保程序的讨论 安装程序的BDE问题? 我创建了一个POPUP风格的窗口,如何去除背景? 和 Oracle 的连接问题(odac ) 帮忙看一下有什么问题!! 高分求救!!急!!关于无法找到动态连接库的问题。 指纹算法 Java Developer Interbase如何自动保存更新 请教数据库连接池的使用.... 不要以为你不骂人你的素质就比那些骂街的高了,如果你卖国那么你的素质比那些骂街的更低,因为你基本不具备一个人的素质了 哪位有有关Vtune的相关资料呀,提供链接也行,最好是指南一类的,3X。 编程几年了,没有希望,想改行,你们呢? 有谁做过“文物馆的文物或藏品综合管理系统”如能提供资料或动者!本人感谢! 入门时奇怪问题? 如何把*.IMG文件转换为JPG文件? 其实你不懂我的心 那里可以买到microchip的mcp2150 ,(要现货),比较紧急,请帮忙 关于对2进制文件的操作 将去做SAP ABAP4平台编程,用过的请进。up有分。 C的图形问题? 为什么我点进去看不到内容? 如何考中程 数据窗口控件为dw_6,其间的对象为D_PUR,我想使其中的图片框的VISIBLE属性变为FALSE总是有错误,请教:)在线等待 kylix2在RedHat7.2下的安装问题? 能告诉我吗????各位哥哥指点一二 数据库置疑问题,并不难?请进 关于串口通讯(向手机发送AT命令集) 高手请看:表格的终极问题 如何得到treeview中选中项的标签或内容? 在哪能下载到FOXPRO2。0(FOR DOS) 请教高手!我没多少分了,50分给你! 怎么办? 谁救救我啊,怎么办? 对已生成的窗体缩小和移位后,恢复原始状态遇到的问题 字段中如何存入一个回车和换行符? 一个MYSQL的问题? PFC编程的那几个PBL库 我这里怎么会没有 请教高手 求最佳算法,谢谢,考试题目,请各位大俠务必帮忙,跪谢! 神阿,救救我吧! 求教高手!关于installshield的问题!我就50分了,全给你! 我号帐号的Email是eColdBlood@csdn.net,好玩吧?! 在COM编程中,PROXY/STUB到底怎么解释为好?谁的COM厉害请解答! 兄弟们帮忙,一个MM让我猜谜语!! win98 序例号? 在V升Al2(SO4)3溶液中加入过量的氨水,过滤得沉淀,然后在高温下灼烧沉淀,最后得到白色固体mg则原溶液中的SO42-的物质量的浓度为答案对了,为什么最后得到固体为Al2O3? 集合A={x|x=a+根号2b,a属于集合z,b属于集合z}判断下列元素x=0,根号2减1分之1,根号3减根号2分之1与集合A之间的关系 玉米除草剂都有哪几种 在VmL Al2(SO4)3溶液中加入过量的氨水,过滤得白色沉淀;然后在高温下灼烧沉淀,在VmL Al2(SO4)3溶液中加入 请用英语叙述人们对于爱情和婚姻在过去和现在不同的态度这是原题:Explain different attitudes towards love and marriage between people in the past and now.请用英语表达,要求不能用百度在线翻译直译.在120字 请帮我看看这些字母是什么意思hit achik ara made roie 直角三角形斜边怎么算 高二《生物》第二册课本中黄色豌豆的颜色是子叶的颜色还是种皮的颜色 现在世界上有哪些国家采用的是三权分立的政治制度 ATP是生命的能量储存物质 为什么不对 恋爱和婚姻有什么区别我很想知道大家对这两个概念的理解和观点这样可以更好的帮助许多对这些问题比较懵懂的朋友们去处理这方面 三权分立原则在美国政治制度中的体现方式 物质可以转换成能量,能量可以转换成物质吗,那样不就可以做能量储存了吗? 我和我的女朋友分手了,我想写一句话.最好能让读者哭的一句话..最好怎么写? 高效液相做苯甲酸和山梨酸苯甲酸和山梨酸各有一峰,当定义各自的曲线时需要定义单峰然后命名,每次我命名完苯甲酸后命名山梨酸时,一积分,两个峰的名称都变成山梨酸了,或者告诉我一下 走复兴路圆中国梦征文600字 求读者 一句话一个国外人说的,具体是 人不要总想尴尬的事,因为没人会帮你记的求 到底是怎么说的 人不要总想尴尬的事,因为没人会帮你记的就是这句话,我想要 这句话更详细的怎么说的 种子含水量与种子的呼吸作用强度之间的关系是怎样的? 走复兴路圆中国梦征文500字 哪家公司对耐高温硅橡胶电缆配方的分析比较精确?最近想对公司的一批耐高温硅橡胶电缆配方进行分析,请问哪家公司在这方面有比较可靠的技术,价格没关系,关键技术要靠谱. 如何结合语境提高高中英语语法教学水平 植物细胞中储存能量的主要物质是什么? 怎样才能用一句话抓住读者?或者说,那些具有能够深达人心底的句子是怎样才具有了这种力量?它们为什么能引起所有人的共鸣与认同?即使从原文的整体里分割出来也生机勃勃…我喜爱写作这 高中英语语法怎么提高?我英语一直就在及格线徘徊 快高考了 不知该怎么办 平时单词 课文也背了 听课也认真 为什么人类要砍伐树木最好相关的问题也回答, 英国的君主立宪制度特点有三权分立吗 高中英语语法怎样提高啊 酰胺类除草剂都有哪些 英国的三权分立与美国的平衡与平等相比,英国强调立法权最高,请问:英国是三权分立国家吗? 强力除草剂有哪几种 水稻除草剂分哪几类?分别有哪些? 英国是如何实现三权分立的? 除草剂主要有哪几种,各有什么特点? 除草剂有哪些种类啊啊?谁知道菜地里用什么好啊? 英国三权分立有哪些作用呢? 除草剂哪种效果好,用了之后不再长草 zwjlz.大家帮忙猜下这几个字母的意思我看到朋友更新的说说是这几个字母,以前她有话不愿说也写字母,这次我猜不到了 美国是三权分立体制、英国是什么? 猜英文字母,字谜L H B S W Q W , H Z C N G H H 这些都是字的开头拼音,是什么意思 豌豆种子的黄色对绿色为显性,圆粒对皱粒为显性,两对相对性状的遗传遵循基因的自由组合定律.纯合的黄色圆粒和绿色皱粒豌豆杂交,取F1的花粉按下图所示的程序进行实验.正确的分析是A. 除草剂哪个品牌好啊? 猜英语字母(急!)1.Which letter is a kind of drink?(哪一个字母是一种饮料?)2.Which letter is an insect?(哪一个字母是一种昆虫?)3.Which letter has a lot of water?(哪一个字母充满了水?)4.Which letter is calling y 豌豆种子的黄色(Y)对绿色(y)为显性,圆粒(R)对皱粒(r)为显性,这两对基因是自由组合的.甲豌豆(YyRr)与乙豌豆杂交,其后代四种表现性黄圆:黄皱:绿圆:绿皱的比例是3:3:1:1.则乙 除草剂的作用 英语猜字母 的基因组成是 如果用F1中的一株黄色园粒豌豆与绿色皱粒豌豆杂交,得到的F2的性状类型有 种.数量比为 这里是接着第三问的?麻烦你你了 豌豆豆荚绿色对黄色是显性,子叶黄色对绿色是显性.现把绿色豆荚、绿色子叶豌豆的花粉授给黄色豆荚、黄色子叶的豌豆,该植株所结的豆荚的颜色、子叶颜色分别是:A.黄色豆荚、黄色子叶B. 最典型的“三权分立”制国家是 A、 英国  B、 法国  C、 美国  D、 德国 最典型的“三权分立”制国家是A、英国 B、法国 C、美国 D、德国  AL2(SO4)3溶液和过量稀氨水反应的化学方程式 豌豆杂交实验黄色必然是显性基因吗? 已知豌豆种皮灰色G对白色g为显性,子叶黄色Y对绿色y为显性.若以基因型为ggyy的豌豆为母本,与基因型GgYy的豌豆杂交,则母本植株所结子粒的表现型为 ( )A.全是灰种皮黄子叶B.灰种皮黄子 芦苇苗?芦苇苗?芦苇苗?芦苇苗?芦苇苗?芦苇苗?哪里出售耐寒耐旱芦苇苗,绿化用芦苇苗? 豌豆未成熟豆荚绿色对黄色是显性性状...豌豆未成熟豆荚绿色对黄色是显性性状,将一颗杂合体绿色豆荚品种的豌豆花人工授以黄色品种豌豆的花粉,则这颗豌豆的未成熟豆荚的颜色会是:A全 现有一粒绿色(yy)圆形(Rr)豌豆,它们的相对性状是黄色,皱缩形.已知这两对基因分别位于两对同源染色体上.该豌豆种植并自花授粉结实(子一代);子一代未经选择便全部种植,再次自花授粉,收获 《走复兴路圆中国梦》初中生读本的征文600字,写的好的给800财富! 求 各种经典文章 青春 励志 最好是描写高中生活类似于你凭什么上北大一类的.《读者》上的经典文章也可越多越好 可以直接打题目,内容我可以自己找最佳回答给提供经典文章最多的人哦. 基因的自由组合定律,豌豆的灰种皮(G)对白种皮(g)为显性,黄子叶(Y)对绿子叶(y)为显性. 豌豆的灰基因的自由组合定律,豌豆的灰种皮(G)对白种皮(g)为显性,黄子叶(Y)对绿子 原始生命起源于什么?详细的问题说明,有助于回答者给出准确的答案 除草剂的类型有哪些 豌豆未成熟豆荚,绿色对黄色是显性,让杂合子绿色豌豆雌蕊接受黄色豆荚豌豆的花粉,所结出数是个豆荚的颜色及比应是,A.绿色:黄色=1:1 B.绿色:黄色=3:1 C.全部为黄色 D.全部为绿色
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘