【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

API 设计中人的因素:专访 Apiary 的 Jakub Nesetril

  • 2013-11-28
  • 本文字数:2369 字

    阅读完需:约 8 分钟

API 的设计与描述并不仅仅是机器之间的技术接口。API 设计和描述并不仅仅是机器间的技术接口。 Apiary 的联合创始人兼 CEO Jakub Nesetril 指出 API 描述的真正使用者是开发人员,需要考虑到开发人员的参与、可用性以及交流等方面。最近,就 API 设计以及 API 工具和工作流,我们与 Apiary 进行了交流。

InfoQ: Jakub,你最近在 API Strategy 会议做了关于 API 设计最佳实践的演讲。你提到了“构建 API 并没有绝对正确的方式”。能谈一下你的这一理念吗,它是如何影响 Apiary 正在做的事情的?

JN::长期以来,API 被视为两个电脑程序之间的接口。实际上,API 是开发人员之间的接口——也就是真实的人之间。如果开发人员不了解怎样使用 API,那么一切都完蛋了——你的项目肯定会失败。

API(以及更通用意义上的软件接口)非常类似于 UI 设计:它受到时尚周期的影响,并且不同的文化背景会有差异(在编程中,指的就是语言和框架的文化),对此很容易形成成见,但是针对什么是正确的设计,没有人能达成共识。

探寻“唯一正确的”UI 设计是很愚蠢的做法,与此类似,API 设计中也没有唯一的金科玉律。但是,有一些技术可以改变既有的主观性。在 UI 界面的演化中,我们看到近十年来,出现的趋势是关注以用户为中心的设计和用户体验。我们需要将这种方式拿到 API 开发之中,与客户和利益相关方实现敏捷、快速集成以及紧密的反馈环路。

InfoQ: 现在有很多的 API 描述标准可供采用,包括你自己的 API Blueprint。有一些是基于 JSON、Markdown、YAML 或 XML 的。你认为哪种方式最好呢?相对其他可选方案,是什么促使你选择了 Markdown 呢?

JN: 当 Apiary 成立的时候,XML、JSON 以及 YAML 格式就已经存在了,我们曾经努力尝试不引入新的格式。但我们强烈感觉到这些语言太复杂了,尤其是考虑到其他角色——如技术文档编写人员或 API 的使用者——要参与进来的时候。当它们要携带大量人类可读的文本内容时会相当繁琐,但是好的 API 文档一般都会包含这样的信息。

我们寻找一种在开发人员内部比较流行的格式,它能够用来编写结构化的数据,同时又能书写成段的文字。我们想找一种人类很易于读写的形式。希望它能够很容易被技术人员和非技术人员所理解。多年以来,markdown 几乎被所有的开源项目所使用,同时也是 GitHub Pages 和 Jekyll 出版系统的核心。开发人员已经使用它很多年了。

InfoQ: 有些开发人员倡议将超媒体(hypermedia)作为契约式 API 开发的可选方案。这个问题似乎已经有很显然的答案了,但是关于契约 API 和无契约 API,你是怎么看的?

JN: 我们可以看到超媒体有很大的潜力,但是到目前为止的推动力还是很有限。超媒体的问题在于采用情况。如果能够被广泛采用,我们可能会看到在 API 的使用方面会有快速的增长,但是契约的作用依然存在,它促成了校验、自动化测试以及工具。如果没有更好的工具支持,这种状况还会持续下去。但是有一些很优秀的人正在完善工具的功能,所以我们将来会看到它的进展。

InfoQ: 针对基于 blueprint 的 API 实现,你最近建立了 Dredd 工具进行自动化测试。在 API 设计和开发方面,你似乎在尝试特有的工作流程。能描述一下吗?

JN: 在过去的十年间,软件开发有了一定的转变,从传统、静态的瀑布设计转变为更为敏捷的迭代。在敏捷中,我们看到了自动化测试、代码覆盖率以及持续集成这样的事情。但是在 API 和接口契约方面,我们看起来依然处于 1999 年代——预先设计、规模宏大的开发工程、陈旧的文档、没有代码覆盖率、没有持续集成。在 Apiary,我们正在试图改变这一点。

在这方面,Dredd 就是一个很好的例子。所有的开发人员都知道单调的、易出错的手工任务应该自动化执行。确保 API 文档处于最新的状态就是一项这样的任务。每个人都讨厌维护文档。借助于 Dredd,我们可以将代码覆盖情况转移到 API 文档之中,这种方式能够与任何已有的持续集成提供商兼容。

InfoQ: 开发人员的参与(engagement)看起来是 API 采用和成功的“秘籍(secret sauce)”。在开发人员的参与方面,每个人所缺失的是什么呢?

JN: 对可用性以及授权的关注依然是很少的。如果你看一下所有成功的 API 项目(以及更普遍来讲,以开发人员为中心的公司),它们的产品中都有很强大的品牌、很好的用户体验,它们允许用户所做的事情超出了用户最初的想象。这不是火箭技术,但是更加难以重新创造。设身处地为用户着想并不是很容易获得或通过训练就能得到的技能。这就是为什么 Apiary 的很多 API 设计会将相关人员聚集在一起:API 设计人员、API 开发人员以及 API 使用人员,创造一个环境让这些人很容易地进行协作。

InfoQ:Apiary 有 25,000 在开发的 API,你有没有规划利用一下这个市场地位,比如说创建 API 市场或仓库?

JN: 这个数字每周都在增长,所以很难进行精确统计。我们有 35,000 个 API,并且这一数字还在攀升。就在一年前,行业分析还曾经严肃地讨论世界上的 API 数量一共是 50,000 或 80,000。现在我们知道,这个数字要大得多得多。尽管 Apiary 的快速增长只是过去 12 个月内的事情,但是行业内的大多数人都在使用机构提供的或自定义的工具。这里面还有很大的成长空间。

我们只关注一件事——只做我们能做好的——那就是帮助开发人员的工具。API 市场或仓库的理念看起来很吸引人,但是我们并没有看到它能够带来的附加价值。

Apiary Inc. 总部位于旧金山,工程人员位于捷克共和国的布拉格。它由 Jakub Nesetril 和 Jan Moravec 创建,并在 2012 年底发布了 API 设计平台的公测版,这是一个创新性的产品。到目前为止,Apiary 已有超过 35,000 个 API,这是世界范围内最大的一个 API 集合。它的早期客户是 Akamai 或 GoodData 的开发人员门户。我们最近与 Jakub Nesetril 就 API 设计、描述、工具以及测试进行了交流。

原文英文链接: The Human Aspects of API Design: An Interview with Apiary’s Jakub Nesetril

2013-11-28 07:031505

评论

发布
暂无评论
发现更多内容

香港中文大学携手PingCode打造运维管理解决方案

PingCode

PingCode 香港中文大学

DevOps国际峰会 | 采访龙智总经理,分享DevOps见解与行业趋势

龙智—DevSecOps解决方案

DevOps 金融行业 devops国际峰会

故障注入的方法与工具

DevOps和数字孪生

故障注入 汽车行业

和鲸 ModelWhale 与麒麟系统适配认证,打造自主安全、性能可靠的信创 AI 基础软件

ModelWhale

人工智能 信创 国产 麒麟软件 数据科学平台

全网最强分布式事务详解

程序员小毕

Java 分布式 分布式事务 后端 架构师

第二届粤港澳大湾区(黄埔)国际算法算例大赛正式开启报名

ModelWhale

算法大赛 琶洲 院士 数据科学竞赛 算法赛

户外LED显示屏怎样在5G时代下发展?

Dylan

5G 广告 数字化 城市 户外LED显示屏

别再说调试器不好用了!

高端章鱼哥

前端 调试器

Docker的架构与安装

timerring

Docker

软件测试 | MySQL存储引擎

测吧(北京)科技有限公司

测试

一份数据满足所有数据场景?腾讯云数据湖解决方案及DLC内核技术介绍

腾讯云大数据

数据湖

软件测试 | MySQL字符集的修改步骤

测吧(北京)科技有限公司

测试

2023年秋招最新版牛客网Java面试题及答案整理(持续更新)

架构师之道

Java 面试

8月31日,上海!第十八届中国IDC产业(长三角)年度大典即将召开!

中国IDC圈

数据中心

安全文件传输:如何降低数据丢失的风险

镭速

文件传输 安全文件传输

业财税档融合:大企业管理升级的必然选择

用友BIP

税务云 业财税档融合

软件测试 | MyISAM是什么

测吧(北京)科技有限公司

测试

容灾切换时间减少 99%,“云边协同”如何提升影演服务效率与稳定性

阿里巴巴云原生

阿里云 云原生

我也创业了!

Serverless Devs

人工智能 Serverless 云原生

出海是产业互联网发展的必然趋势之一

用友BIP

产业互联网 中企出海

数字孪生(Digital Twin)快速入门:简介以及应用示例

龙智—DevSecOps解决方案

数字孪生 digital twin

比AD更好用的“PCB设计文件转生产文件”工具

华秋PCB

软件 工具 AD PCB PCB设计

西安航天基地人才创新创业大赛正式启动

华为云PaaS服务小智

西安 大赛 比赛 西安航天 企业人才

第二届“鼎新杯”数字化转型应用大赛-全国入围赛结果公示及最佳人气案例投票启动

信通院IOMM数字化转型团队

数字化转型 IOMM 鼎新杯

亚信安慧荣获第二届“鼎信杯”优秀技术支撑奖

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 7 月 PK 榜

数字孪生搭高台,温控节能唱新戏

鲸品堂

数字孪生 建模 智慧机房

10 个处理 JavaScript 对象的实用技巧!

这我可不懂

JavaScript 前端 开发语言

软件测试 | MySQL字符集的设置

测吧(北京)科技有限公司

测试

服装行业MES系统解决方案|免费使用MES系统

万界星空科技

开源 MES系统 服装行业

Stepn跑鞋/Jogger慢跑者NFT系统开发案例

薇電13242772558

NFT

【升职加薪秘籍】我在服务监控方面的实践(1)-监控蓝图

蓝胖子的编程梦

elasticsearch 性能优化 Grafana 服务监控 #Prometheus

API设计中人的因素:专访Apiary的Jakub Nesetril_软件工程_Saul Caganoff_InfoQ精选文章