Web API 作为许多软件的第一道门面,提升其体验的努力从来没有停止过。今天,围绕 Web API 的开发体验和使用体验,已经成长出一个庞大的软件生态。本文以常用的 Web API 开发工具和平台为切入点,介绍当前 Web API 的开发者基础设施。
终端工具
最初的 Web API 开发者显然是黑客,而黑客们的开发工具大多是终端工具,也就是不依靠图形化界面,而是以纯文本来交互的工具。
GNU wget
早期广外流传的 Web API 工具非 GNU wget 莫属。今天,你仍然可以在许多软件的官方网站上看到形如 wget ... 的下载安装指南。
通过 man wget 可以查看其使用手册,共约 2000 行。wget 作为初代 Web API 工具,提供的是基础的下载网络资源的功能。随着网络技术的迭代,它会引入一系列新的参数来支持新的功能,但是整体还是偏向于简单,并且新参数的引入很有时代特色:后来的工具,往往能对早先的技术探索作扬弃和合并,但是一路跟进技术发展的工具,尤其是大众工具,常常因为需要保持向后兼容而不能移除跟进早期探索的不完美实现。
wget 只支持 HTTP(S) 和 FTP 两种协议,而 curl 作为 Web API 开发的瑞士军刀,支持的网络通信协议就非常多了:
curl is a tool for transferring data from or to a server. It supports these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. The command is designed to work without user interaction.
HTTPie: modern, user-friendly command-line HTTP client for the API era.
HTTPie (pronounced aitch-tee-tee-pie) is a command-line HTTP client. Its goal is to make CLI interaction with web services as human-friendly as possible. HTTPie is designed for testing, debugging, and generally interacting with APIs & HTTP servers. The http & https commands allow for creating and sending arbitrary HTTP requests. They use simple and natural syntax and provide formatted and colorized output.
从提供 API 的开发者的角度看,API 解决了一个常见的问题:如何将自己的代码开放给其他开发者去使用,以及如何让他们基于自己的代码进行创新。
现代软件开发的过程并非开发者完全从头编写每一行代码。相反,行业当中已经有相当数量的成熟应用提供公开服务。这些服务涵盖支付、通信、授权和身份认证等领域。在构建一个新软件时,软件工程师的工作就是使用这些 API 来组合新产品。重用他人的代码可以大大节省自己的时间,并且可以避免部分重复造轮子的操作。此外,使用业内约定俗成的公开服务,能够降低用户使用和其他应用集成的门槛。
Web API 的范畴
广义上的 API 包括太多内容,几乎只要是能够调用另一段代码的方法,都在 API 的范畴之内。甚至稍加琢磨,说不定能出一个 API 版本的阵营九宫格。
把范围缩小到 Web API 上来,这样的应用程序接口只会被调用方经由网络访问,这同时也意味着其访问方式是独立于特定编程语言的。
例如,在上面的 API 实例中,右上角展示的访问该 API 的方式,基本是一个语言无关的 HTTP 请求,而使用各个语言通用的 HTTP client 库,就可以对这一 API 进行集成。
经常与狭义的 Web API 相混淆的,是 Software Development Kit (SDK) 即软件开发工具包。例如,GitHub 在语言无关的 REST API 的基础上,还提供了不同语言的 Octokit SDK 库:
这里需要单独拿出来稍作展开的,是围绕 API 的设计、测试和发布构建的一系列 API 平台。API 平台是开发者体验基础设施的一环,它的出现是 API 的价值的反映,同时也代表了业界对 API 的设计跟整个生命周期认识的一个基准线。
其中最有名的当属在 2021 年融资 2.25 亿美元的 Postman 公司。它最基本的功能是帮助开发者调试应用开发时需要访问的一众 API 并保存测试结果。进一步地,Postman 对常见的请求参数构造做了集成,帮助开发者更快速全面地测试 API 的可用性。最后,Postman 面向 API 的设计者推出了一系列辅助设计和管理 API 的功能。
此外,Orbit 提供的可以在线交互调试的 API 文档页面也不是自研的,而是 readme.com 的产品。它在交付一整个 API 文档站的基础上,支持用户在线交互调试,并在后台记录这些交互数据,以帮助 API 的设计者得到用户真实的使用反馈。
最后,在这些商业支持的集成平台之外,类似 curl / httpie / jq 这样的开源命令行工具,以及 Swagger 这样的开放 Web API 定义标准和套件,也是 Web API 如此繁荣的重要生态支柱。