Dropbox发布具有可伸缩性的API

在我们构建新的API时,人们通常会在未来的不可知和对棘手问题的预优化之间感到迷茫。Dropbox也不例外。构建API时,Dropbox开发人员必须考虑到作为一家公司可能会出现的快速增长,同时也需要认识到,他们对API做出的任何变更,随着时间的推移总会被一部分API消费者认为是在倒退。那么他们最终是怎么解决这些问题的?答案是三思而后行。

Leah Culver之前曾是Dropbox的一名开发人员,他去年发表了一篇博文,文中详细阐述了Dropbox针对自身的API,从V1版本到V2版本的艰难升级过程。他们的第一个重大决定是,是否让现有的API适配日益增长的消费者需求,因为他们扩展了Dropbox Pro和核心功能。他们的决定主要围绕着与API消费者的“共生关系”展开,Culver将其描述为应对API增长的秘密武器。他们面临两种需求,一个是以一种灵活的方式与其他公司应用集成,一个是不造成混乱,最终前者战胜了后者,连通性比之前的任何时刻都要来得重要。一项最新的Google调查显示,有四分之一的用户通过搜索引擎发现应用程序,根据Statista的报告显示,大约2到3百万个应用程序在安卓和苹果应用商店可供下载,对于这些应用程序来说,搜索可见性是非常重要的。越来越多的用户不愿意因为要使用相关功能而安装多个应用程序,而错过扩展Dropbox API的机会意味着与第三方应用程序集成度的下降,最终导致Dropbox用户的减少

然而,在创建Dropbox API的V2时,Dropbox有关闭的趋势。Dropbox创建了自定义的JSON,而不是使用REST范式、GraphQL或者套接字服务,这样很大程度上偏离了REST或HTTP的准则。不使用通用的HTTP状态码,Dropbox转而针对所有的错误使用409错误码,并在消息体里附带了自定义的错误消息。Dropbox的API处理层是一个HTTP POST方法。不需要使用请求消息的URL或消息头,Dropbox接收一个JSON消息体作为输入,然后返回一个JSON消息体,不管执行的API操作是检索还是修改状态。

在伸缩性方面,Dropbox的方式有几处优点和缺点。一方面,Dropbox不受REST的死板、僵化天性的限制,这类限制不适用于所有的数据使用案例,所以常常让人完全误解。Steve Klabnik,RUST/RUBY贡献者,同时也是Rust for Rubyists的作者,他声称,99.99%的RESTful API没有完全符合Roy Fielding的REST思想。这一论点打破了过往认为RESTful规范可以让Dropbox的API很容易适配未来的应用场景的论调,因为他们不符合任何一套模型。然而,对应于他们所获得的灵活性,他们也失去了结构性和大多数开发人员的易理解性。

HTTP状态码是一个通用标准,负责与Dropbox API集成的开发人员会很容易理解和使用,响应报文里面的自定义状态码不仅仅需要额外的字符串处理程序,而且也难以从编程角度理解不同的错误状态。在提供强大的API开发可能性的同时,混合使用GET和POST原语,分不清来自客户端的调用哪些是改变对象状态的操作,哪些是存粹的查询操作,这种集成方案具有潜在的风险。大部分自定义API架构要求掌握大量有关Dropbox API的领域知识,而不仅仅是把它当成一个简单的API看待。Dropbox的开发人员F. Metsys写了一篇博文,在文章中他描述了Dropbox的方式:“我们伺机选择了HTTP的优点,而不会将自己绑定在它上面。”这意味着Dropbox的API可以提供其他API无法提供的特性和数据可见性,或者也可能意味着一种令人困惑且紧凑的集成过程。只有时间可以告诉我们,Dropbox API的ad hoc结构对于整体的增长和伸缩是有利还是有害。

本文转自d1net(转载)

时间: 2024-09-20 05:58:57

Dropbox发布具有可伸缩性的API的相关文章

Dropbox发布Dropbox Platform 用户可同步应用

1.Dropbox发布DropboxPlatform,用户不仅仅可以同步文件,也可以同步应用程序 Dropbox今日发布了 一款名为DropboxPlatform的新产品,用于替代用户的硬盘.DropboxPlatform是基于同步API建立的, 开发者可以基于这项服务快速开发自己的跨平台应用.用户未来不仅仅可以使用Dropbox同步文件,还可以同步应用程序.目前,Dropbox的用户数量已经达到1.75亿. 2.Google向http://www.aliyun.com/zixun/aggreg

独家丨慧川智能发布首款视频理解API,要让AI真正取代“剪片子”的人类?

慧川智能CEO:康洪文 在今日由中国计算机学会(CCF)主办,雷锋网和香港中文大学(深圳)承办第二届CCF-GAIR全球人工智能与机器人峰会的AI+专场上,慧川智能CEO康洪文在给大家带来"AI(爱)让视频更简单"的主题演讲的同时,也重磅首发了一款新的视频内容理解的API产品:智影·视频理解API. 据康洪文介绍,这款API可利用深度学习技术,对一段完整输入的视频中所涵盖的图像和视频流进行模式识别.拆解和结构化,从而对视频内容实现精确到每一帧的处理. 康洪文向雷锋网(公众号:雷锋网)表

iOS云存储神器Dropbox发布Android版

12月23日消息:Dropbox是iOS系统上很火的一款云存储应用,但一直迟迟未推出Android版.作为圣诞节礼物,近日该公司发布了早期未发布的Android应用.这个经过错误排查的新版本,增加了大量新鲜的功能:批量上传,单击访问内容,并迅速离线进入到你的收藏夹,等等. 对Android4.0优化的Dropbox Dropbox Android版应用提供了完整的ICS(冰激凌三明治缩写,Android4.0)优化,是当前Android4.0和未来更新的用户的一大喜讯.喜欢尝鲜的用户可点击链接,

Dropbox发布照片存储管理应用Carousel

摘要: Dropbox今天在旧金山的发布会动作很大,除了放出Android/Mac版Mailbox,整合Personal和Business账户之外,还另推出了一款照片管理应用Carousel. Carousel的照片存储管理功能来自Dropbox在2012年12月 Dropbox今天在旧金山的发布会动作很大,除了放出Android/Mac版Mailbox,整合Personal和Business账户之外,还另推出了一款照片管理应用Carousel. Carousel的照片存储管理功能来自Dropb

SDOM 0.5.1发布 W3C文档对象API模型

SDOM一个提供W3C文档对象API 3级模型的完整实现,包括事件处理R6RS计划. SDOM 0.5.1这是一个修正版本,解决破碎符号引用和DOCTYPE-feee XML文档解析一些严重的问题.其他节点的突变事件进行了适当的改进. 下载地址: http://savannah.nongnu.org/download/sdom/sdom-0.5.1.tar.gzhttp://savannah.nongnu.org/download/sdom/sdom-0.5.1.tar.gz.sig

Web API核查表:设计、测试、发布API时需思考的43件事

当设计.测试或发布一个新的Web API时,你是在一个原有的复杂系统上构建新的系统.那么至少,你也要建立在HTTP上,而HTTP则是基于TCP/IP创建的.TCP/IP建立在一系列的管道上.当然,你也需要考虑Web服务器.应用程序框架或者是API框架. API从设计到测试以至最终的发布需要经历一个漫长的过程,本文将主要探讨Web API从设计到最终发布,开发者可能忽略或者应该注意的东西. HTTP篇 HTTP 1.1规范RFC2616是一个非常大的文档,下面我们节选了一些可能会对API产生影响的

MuleSoft发布新的Anypoint Platform,用户可操控API

Mulesoft发布了新的Anypoint Platform主版本,其亮点在于团队协作功能,支持在平台内对API的创建.保存.发现和重用,以及资产(Asset)的整合. 该版本命名为"Crowd",关键特性包括: 新的Anypoint Design Center,用于IT资产的保存和自助式服务. 引导方式的流程设计:平台会根据用户的操作,以智能感知的方式给出建议的方法,确保了设计API的最佳实践.原生的协作方式.用户无需特地访问Exchange网站以搜索.下载并导入资产到自身的设计中,

Twitter发布新广告API 吸引品牌厂商

新浪科技讯 北京时间2月21日早间消息,Twitter周三发布了 新的广告API(应用程序接口),在吸引品牌厂商的道路上又迈出了重要一步.新广告API将有助于合作伙伴在Twitter上面开展更为广泛的营销推广活动.从今年一月起,Twitter开始对这一API展开测试,该公司称Adobe.Salesforce.Hootsuite.SHIFT以及TBG Global等 五个合作伙伴都参与了这一测试,这五家公司均 围绕新API开发了相关产品.Salesforce营销部门高级副总裁马赛尔·勒布伦(Mar

亚马逊发布全新移动广告API

http://www.aliyun.com/zixun/aggregation/17197.html">北京时间3月5日消息,据国外媒体报道,亚马逊当地时间周一针对开发人员发布了全新移动广告API(应用编程接口),开始允许开发者在应用内投放显示广告.目前,该项目只面向美国地区开放,因此亚马逊其他地区的开发者尚无法享受到这一服务. 据悉,亚马逊的这一移动广告API可以应用到所有已经登陆亚马逊App store商店的Android平台应用中.这也就意味着,如果一款应用从亚马逊跳转到谷歌平台,将