公共API是现代网络的一个重要特征。无论您是在关注 Twitter 和 Facebook 应用程序的生态系统、用于管理 eBay 拍卖的工具,还是用于在博客文章中嵌入 Youtube 视频的代码,清晰的服务集成方式都是打造更引人入胜的网络体验和为用户提供解决方案的关键。后一点支撑了Martha Lane Fox 报告中的建议:“服务的内容、功能和特性应该……广泛可用,并可通过联合/应用程序重新使用。”
当我们开始构建支持单域测试版的软件时,我们必须想办法将其从发展方向转变为具体功能。从某种程度上讲,我们可以简单地说,如果我们很好地构建 HTML,那么页面本身就可以作为我们的 API 发挥作用。这当然是一个愿望,但我们可以做得更多。
与 Alpha.gov.uk 一样,我们将测试版构建为一系列松散连接的小块。这些连接由 API 启用。这是我们向公众开放的第一轮 API。因此,在我们当前开发的网站版本上,您可能会看到一组这样的图标:
该JSON链接为您提供了我们用于构建您所在页面的 哥斯达黎加 WhatsApp 号码数据 相同数据,并且由于该页面的地理位置非常重要,因此KML链接以我们用于将其导入 Google Earth 进行健全性检查的格式为您提供原始位置数据,而CSV则用作我们数据收集和清理过程的一部分。
在测试“查找我最近的”工具时,我们发现这些格式非常有用。结果并不像我们预期的那样,只有当我们将 KML 文件导出到 Google Earth 时,我们才发现我们合作的所有登记处都位于澳大利亚海岸附近。几分钟后,我们修复了错误,一切运行顺利。
我们不仅在构建 API,我们自己也在构建相同的 API。在软件开发中,这被称为“吃自己的狗粮”,这是一个令人不快的短语,但现在被广泛接受的最佳实践是构建任何规模的网站时。这是Paul Hammond和Simon Willison(当时都在 Yahoo!)在 2006 年 dConstruct 会议上讨论的内容,Amazon.com 的开发人员经常谈论他们用来编写网站上每个页面的大量服务,并且整个行业都可以看到同样的模式。