API 设计: 想清楚了再写代码(1)

作为软件开发人员,我们很难抗拒把自己的想法写成代码的冲动。当突然有了想法,我们的手指就无法控制,就行一群野兽一样在键盘上疯跑,想用最快的速度实现我们的想法。

尽管这种感觉特别爽,但是我们最好还是退一步思考下,特别是当你创建的东西会被很多人使用,比如一些公共API。在此篇文章中,我讲为大家说明为什么和如何去设计一个深思熟虑的API。

API(Application Program Interface)是一个用于定义应用程序接口的通用术语,换句话说,就是人或者机器是如何与机器进行交流的。在web开发领域,一个API就是一个站点回复客户端请求的结构化文本数据的途径。

另一个被web开发者广泛应用的理念是 RESTFul Web API. 是由 Roy Fielding 定义,其作为一种架构风格,它提供了一个完善的客户端和服务器之间的通信协议。它有一些限制: 无状态通信,基于已有的技术(一般是HTTP),使用超媒体作为引擎状态
换句话说,它提出了一些构建web API 的模式。为了简单起见,本文引用的Web API都是简单API。

一个JSON胜万言(One JSON is worth a thousand words)

看一个API响应的例子:

{
  "data": [
    {
      "story": "Jonatas Baldin was writing a blog post.",
       "created_time": "2017-15-01T00:02:57+0000",
       "id": "624510964324764_1046909755418214"
    },
  ]
}

这个数据片段叫JSON, 这是在智能手机上看到的一个Facebook的一个状态消息,来自于 Facebook API,是不是相当简洁?

现象一下,如果你是一个负责这个API的Facebook工程师,突然你有一天你脑子一热决定把id字段改成message_id. 可以想象,这么一个小小的改动,有可能让Facebook崩溃。最终导致所有依赖之前结构的设备不能收集和展示给用户内容,这是多么操蛋的一天。

好的,糟糕的和丑陋的(The good, the bad and the ugly)

一个糟糕的API设计早晚会引起问题:

缺乏一致性:一旦一个API的增长,要创建访问点往往只是为了满足紧急需求。
很难扩展:遇到问题很难找到扩展突破口。
很难学习:学习曲线陡峭
性能问题:后来适配的API往往是性能瓶颈
API改变无休止: 总是第一次是对的,后面都不对。

API是程序和用户之间的契约,当突然改变的时候不能引起混乱,这个契约要有远见。这是设计的入口:一个计划,一个公约,一个系统或者是一个可评估的交流。

原文

API Design: Think First, Code Later

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,019评论 3 119
  • 27c 为了使意见不统一能带来好的结果,评估个人决策或者决策者必须在更高的层面上去看待这些问题。举个例子,如果受到...
    财才阅读 201评论 0 0
  • 卸载apk adb uninstall com.chaincloud.securewallet 1.查看当前所在的...
    学费阅读 345评论 0 0
  • 我用新生的芽呼唤树的名字,呼唤被风劫持,抵达他的耳畔的消息是微渺的心音。 这样已经足够了啊,轻细的酸楚钻进皮肤深处...
    风轻语阅读 652评论 0 2