资源描述
前 言 报告方法论 当前,数字化转型已深入各行各业,API这个曾经的底层代码接口,不仅发展成为 产品本身,更成为企业承载价值、连接业务的核心载体,一个由API使用者和开发者组成 的、围绕API产品生命周期的价值交换新模式正日益成熟,特别是与微服务、DevOps等技 术的融合,都将使得API战略成为企业加速创新的利器。 该报告旨在通过全面的视角反映API生态的发展现状,包括API使用者和开发者的主要 诉求、策略、行为,展现API产品生命周期各阶段的实践过程、工具使用情况,并进一步探 讨API技术未来可能的发展方向、价值实现方式,力求为相关企业、组织、个人制定API战 略提供一个参考视角。 该报告的观察和发现主要基于数据统计,我们广泛采集了相关从业者的数千份调研问卷,并从中优选了 5000余份具有高可信度的数据,在此基础上结合主观经验进行数据的解读和剖析,对数据产生的客观背景、深 层次原因进行了适当延伸,最终得到以下若干结论。 目 录 主要结论 01- API的发展和应用现状 06- 关于结论的说明 02- API的使用者需求 12- API开发者的策略和行为画像 16- API设计流程和工具 22- API测试流程和工具 26- API文档的使用 32- API综合管理体系 37- 41-API的技术挑战和发展趋势 统计人口样本 44- CONTENTS 主要结论 1、当前,我国API生态尚未成熟、市场尚处早期发展阶段,虽然API已广泛应用在以网 页、移动应用、后端系统集成为主的众多场景,但因质量问题带来的API变更仍然是造成线 上事故的主因。在所有受访者中,API开发者呈现出人数比例偏低、集中在开发/设计端、 从业经验尚浅等特征。 2、使用者对API的主要诉求已由获取数据能力转变为获取技术能力、甚至业务能力, 使用者渴望高效便捷的寻找、调用方式,除关注API产品本身性能外,也愈发关注优质的后 续服务和使用体验。 3、当前开发API的最主要目的是优化内部系统、工具和团队协作,其次是促进形成生 态、开展外部合作,较少被用于盈利目的,API的开发行为同样需要广泛地借助各类工具, 工具的易用性是其首要关注点。 4、API开发模式正走向规模化、体系化,半数开发者已经建立API设计流程,开源编 辑器依然是其首选的设计工具,设计方式逐渐由代码驱动转向文档驱动,通过API设计文档 自动生成代码的能力愈发重要。 5、质量低下的API可能对用户的业务造成严重影响,缺乏合适的工具和技术已经成为 保障API质量的最大障碍。API开发者同样意识到了质量问题,建立API测试流程已经成为 共识,普遍使用多款测试工具,YAPI、Postman是目前的主流。 6、七成受访者已建立正规的API文档流程,但大量的团队还没有意识到API文档应有 的重要作用、也不具备自动化生成API文档的能力,有相当比例的受访者选择使用自研的 API文档工具,相关工具的匮乏似乎成为API文档管理的障碍。 7、开发者的API管理意识更强,普遍选择API网关开放API、以及通过API综合管理平 台实现API的全生命周期管理。 8、API技术依然面临全面的挑战,受到最多关注的包括标准化、可组合性/可重用性、 和安全性,且普遍认为微服务、物联网、DevOps等技术的发展可能对API最具促进作用。 01 关于结论的说明 当前,我国API生态尚未成熟、市场尚处早期发展阶段,虽然API已广泛应用在以网 页、移动应用、后端系统集成为主的众多场景,但因质量问题带来的API变更仍然是造成线 上事故的主因。在所有受访者中,API开发者呈现出人数比例偏低、集中在开发/设计端、 从业经验尚浅等特征。 约78%的受访者表示已经将API对外部开放,其中供外部付费使用的仅占9%,一定程 度上说明当前API应用行业的竞争还处于蓝海时代。伴随企业的数字化、微服务改造进程不 断深入,API被广泛应用在网页、移动应用、后端系统集成等场景,API经济正在帮助各行 各业的企业借助外部力量高效、低成本、快速地获取数据和技术能力,新势力仍有广泛的市 场机遇。 API经济中,API质量问题仍是参与双方的主要困扰,因质量问题带来的API变更占据 了线上事故中相当高的比例。当API出现问题时,使用者期待开发者提供便捷的沟通渠道和 及时有效的处理方式,这需要API开发者有相应的技术能力维持高水平的可靠性、安全性和 功能。 就我国的API经济参与者来看,API使用者的数量比例明显高于开发者,双方数量比例 约为2:1,开发者集中在开发/设计端,且经验尚浅,从业3年以下的占比44.4%,这也说明 我国的API经济尚处早期发展阶段,即希望通过API获取外部数据、技术能力的需求旺盛, 但相对缺乏有能力开放高水平API、并进行全生命周期管理的组织。 使用者对API的主要诉求已由获取数据能力转变为获取技术能力、甚至业务能力,使用 者渴望高效便捷的寻找、调用方式,除关注API产品本身性能外,也愈发关注优质的后续服 务和使用体验。 从API的使用目的来看,使用者通过API获取技术能力、甚至业务能力的需求明显高于 获取数据的需求,选择两者的受访者占比分别为78%、42.3%。进一步讲,使用者更关注 API的可用性,易用性、API文档准确详尽、服务可用性是其最为关注的三个要素。对于 API开发者来说,除了产品性能的竞争外,更加优质的后续服务和使用体验,也会赢得更多 用户的青睐。 在寻找API和调用过程中,使用者最希望获得在线API调试、API参数说明、API全局搜 索、SDK示例代码功能,表现出使用者希望高效找到合适的API、并快速掌握其使用方法 的诉求。 1. 2. 02 当前开发API的最主要目的是优化内部系统、工具和团队协作,其次是促进形成生态、 开展外部合作,较少被用于盈利目的,API的开发行为同样需要广泛地借助各类工具,工具 的易用性是其首要关注点。 从API开发者的行为来看,开发API的主要动力是来源于组织内部的,有55.7%的受访 者表示希望通过开发API优化内部系统、工具和团队协作,48.3%的受访者希望能够减少开 发时间/成本、提高效率。源于组织内部的开发动力决定了API的衡量标准,开发者最关注 API可用性,包括性能、功能性等方面的考量,但对于后期稳定性的关注度有所欠缺。 在开发行为中,Java仍是48.8%的开发者选择的主流语言,相应的,34.7%的开发者 使用IntelliJ IDEA作为集成开发环境,另外,华为云CloudIDE、VSCode等生态丰富的集 成开发环境也广受开发者青睐。在开发工具的选择上,API开发者需要广泛地借助各类工 具,涵盖设计、文档管理、测试等各个环节,易用性是开发者选择工具的重要关注因素。 API开发模式正走向规模化、体系化,半数开发者已经建立API设计流程,开源编辑器 依然是其首选的设计工具,设计方式逐渐由代码驱动转向文档驱动,通过API设计文档自动 生成代码的能力愈发重要。 API设计能力的重要性不言而喻,建立API设计流程对提升设计能力的作用已经成为共 识,共计约75%的开发者对拥有正式的API设计流程持正面态度。从设计方式来看,代码驱 动的设计方式正逐渐转向文档驱动,采用两者的开发者占比分别为48%、38%。API开发 模式正走向规模化、体系化,API开发文档的重要性愈发凸显,这也促使共计约65%的开发 者表示希望获得、或已经实现了通过API设计文档自动生成代码的能力。 在设计行为上,开源编辑器依然是开发者进行API设计的首选工具,且RESTful风格的 API因其具备的天然优势而受到广大开发者欢迎,被54.4%的开发者采用。 3. 4. 03 质量低下的API可能对用户的业务造成严重影响,缺乏合适的工具和技术已经成为保障 API质量的最大障碍。API开发者同样意识到了质量问题,建立API测试流程已经成为共 识,普遍使用多款测试工具,YAPI、Postman是目前的主流。 低质量的API直接影响使用者的项目交付时间,甚至严重影响用户和公司品牌,尤其是 在更多的组织转向DevOps方向以实现持续集成和持续部署开发的背景下,第三方API产品 的质量稳定性将关系到整个项目的开发进度和交付质量。当前,建立API测试流程已经成为 共识,有78%的使用者和开发者认为它非常重要,但缺乏合适的工具和技术是进行API测 试的最大障碍。 从API测试的行为来看,YAPI、Postman是应用最为广泛API测试工具,但76.5%的 API使用者和43.2%的API开发者使用过多个测试工具,也说明还没有哪款工具赢得了用户 的信任。 七成受访者已建立正规的API文档流程,但大量的团队还没有意识到API文档应有的重 要作用、也不具备自动化生成API文档的能力,有相当比例的受访者选择使用自研的API文 档工具,相关工具的匮乏似乎成为API文档管理的障碍。 API文档作为开发团队的必备工具,其重要性不言而喻,有58%的受访者对所在组织 API文档的完善程度给出正面评价,72.8%的受访者表示已建立正规的API文档流程,但依 旧有超过半数的受访者表达出不认同其重要性、或目前没有API文档流程,显然API文档的 价值还没有得到正确认识。 从文档需求和工具使用情况来看,文档可读性是最重要的API文档需求,Swagger- Hub、ReadMe/Markdown、Atlassian Confluence是目前应用最为广泛的三款API文档 工具,分别有13.8%的API使用者和23.3%的开发者使用自研的API文档工具,众多的管理 工具在个性化的需求面前也显得众口难调。 尤其对于API文档自动生成工具,仅36%的API使用者、34%的API开发者表示有能力 自动化生成API文档,而其余54%、58%的API使用者、开发者则手动编写API文档,市场 现有工具似乎并不能为实现这一能力提供有效的帮助。 5. 6. 04 开发者的API管理意识更强, 普遍选择API网关开放API、以及通过API综合管理平 台实现API的全生命周期管理。 在API的开放和调用方式上,开发者更倾向通过API网关开放API、并实现部分API管理 能力,使用者则更关注API的可用性,总计70.9%的API使用者通过类库、SDK调用、直接 调用的方式使用API,之间的差异体现出二者对于API管理诉求的差别。在管理工具的选择 上,云厂商围绕API生命周期提供了更全面的管理功能,本次调研的结果显示,阿里云、腾 讯云、华为云的管理平台占据了主要市场份额。 API技术依然面临全面的挑战,受到最多关注的包括标准化、可组合性/可重用性、以 及安全性,且普遍认为微服务、物联网、DevOps等技术的发展可能对API最具促进作 用。 API的开发和管理方法正在期待更加标准化、自动化的变革,受访者认为API最主要的 三项技术挑战分别是标准化、可组合性/可重用性、安全挑战。 从受访者普遍看好的微服务、物联网、DevOps等技术当中,我们可以适当延伸解读 API的发展趋势。首先,微服务架构将与整体的API策略深度绑定;其次,物联网的实现将 越来越依赖API技术;第三,DevOps和API的融合将产生更大的业务价值。 8. 05 7. API的发展和应用现状 在报告的开篇部分,我们将为API生态 描绘一个基本的现状雏形,从主要用 途、应用场景、发展瓶颈、参与者画像 等角度总结我国API生态的供需现状、 发展特征及应用潜力 第一部分 大部分API同时面向内部和外部提供,网页、移动应用是目前API支 持最多的场景 数据表明,虽然API的主要开发动力源于提升内部效率,但仍有约56%的受访开发者将 API积极地对外开放,仅有21%的受访者表示仅供内部使用,这样的行为也表明开放的API 正在给开发者自身带来积极的影响和效益。 从支持的场景来看,API已广泛支持了网页、移动应用、桌面、消息、事件,以及 loT、原有系统的数字化改造等众多场景,其中,网页、移动应用是其支持最多的场景。 API的主要用途 API的支持场景 API 的发展和应用现状 1. 56% 21% 13% 9% 1% 向内部和外部提供使用 仅供内部使用 供外部免费使用 供外部付费使用 不确定 网页 移动应用 后段系统集成 桌面 消息 事件 嵌入式 IoT 原有系统数字化改造 63.4% 59.6% 35.5% 29.4% 27.8% 22.6% 17.6% 13.8% 0% 10% 20% 30% 40% 50% 60% 11.5% 07 API使用者遭遇API变更,进而引起的线上事故的比例较高 API的使用者和开发者都因遭遇API变更引起了一定比例的线上事故,在API使用者 中:45%的受访者遭遇API变更引起线上事故的比例在25%-50%之间、38%的使用者表 示这一比例低于25%;而API开发者中这一比例相对较低:调研中48%的开发者选择了 “低于25%”、37%选择了“25%-50%”的数值区间。 总体看来,尤其对于API使用者,API变更可能已经成为造成线上事故主要原因之一, 而开发者显然拥有更好的应对措施。对于API开发者而言,需要提升稳定性方面的意识,为 使用者提供更多使用上的稳定性保障。 API开发者(左侧)与使用者(右侧)遭遇API变更,进而分别引起的线上事故比例 2. 75%100% 50%75% 25%50% 低于25%48% 13% 0%0% 10% 20% 30% 40% 50%50% 40% 30% 20% 10% 2% 37% 38% 14% 3% 45% API 的发展和应用现状 08 当API出现问题时,开发者应提供便捷的沟通渠道和及时有效的处理 方式,这对开发者进行API产品全生命周期的管理提出了更高要求 当使用者遇到第三方API出现问题时,近六成的受访者会通过向API提供者提交问题、 或临时切换到另一个API服务提供者等方式寻求解决,最大程度上保证业务的稳定,仅 14.3%的受访者选择了等待,其余受访者会通过各种方式尽快找到解决办法或替代方案。 而对于API开发者,使用者更希望其能够提供问题描述以及解决问题的步骤、临时的解 决方案、即时的通知或警告。 由此可见,API使用的稳定性至关重要,API产品应当为使用者提供一个能够随时沟通 并处理问题的服务方式,这也对API产品全生命周期的管理提出了更高要求。 API使用者遇到第三方API出现问题的处理方式 当API出现问题时,API使用者希望开发者采取哪些措施 3. 向API提供者提交问题 临时切换到另一个API服务提供者 向团队或组织内部其他人员提交问题 审视SLA(服务等级协议) 考虑永久切换到另一个API服务提供者 向外界公开此问题(例如论坛、社区、社交媒体) 等待问题解决 49% 46.3% 40.8% 31.5% 24.5% 24.0% 14.3% 0% 10% 20% 30% 40% 50% 提供问题描述以及解决问题的步骤 提供临时的解决方案 提供及时的通知或告警 提供公开的API状态更新页面 当问题解决时及时发布通知 59.7% 57.8% 47.0% 38.6% 32.6% 0% 10% 20% 30% 40% 50% 60% API 的发展和应用现状 09 我国API生态尚不成熟,市场尚处早期发展阶段,API使用者的数量 比例明显高于开发者,开发者集中在开发、设计端,从业经验相对不足 本次调研中,72%的受访者为API使用者,占比超过2/3,而API开发者占比不足1/3。 在从事API开发或相关工作的受访者中,从事开发、设计/架构、测试的人员占比最大,总 计达到约75%,而从事文档、部署运维、安全、技术支持、运营监控等职能的人员占比较 少,且年限3年以下的总占比44.4%,经验并不算丰富,也表明新的入局者存在较好的市场 机遇。 这一定程度上可以说明我国API生态的产品能力不足、市场尚处早期发展阶段。一方 面,仅少量企业或组织有能力通过开发API的手段优化内部效率、并通过优质的管理将内部 功能转化为对外服务业务;进一步讲,这样的组织以API开发为主、以API所能提供的能力 为核心竞争力,而对于API的管理、维护能力投入不足。相较之下,更多的公司希望借助外 部工具快速实现自己的业务逻辑,因此市场对于通过API的方式获取技术能力的需求较为旺 盛,对于很多开发者来说,提供API产品仍然具备较大的市场空间。 开发者从事 API 相关开发或提供 API 服务的年限 受访者在API生态中的角色 4. 72% API使用者 28% API开发者 API 的发展和应用现状 10 少于1年 13年 35年 510年 10年以上 9.3% 6.0% 15.0% 34.6% 35.1% 0 5 10 15 20 25 30 35 40 开发者负责的API工作 35% 29% 9% 4% 4% 3% 3% 2% 11% 开发 设计/架构 测试 战略规划 文档 部署运维 安全 技术支持 运营监控 API 的发展和应用现状 11 API的使用者需求 本章试图站在API使用者的角度,探求 其使用API的主要目的、功能诉求以及 主要关注点 第二部分 API 使用者的需求 使用者对API的主要诉求是获取技术能力、甚至业务能力 在对API使用者的调研中,57.7%的受访者使用API的主要目的是“使用API提供的能 力完成功能交付,避免重复开发,提高效率”,以“调用API,从外部服务获取数据”为主 要目的的受访者仅为22%。此外,还有20.3%的受访者同时选择了两者。 由此看来,使用者对API的应用诉求已经由初期的获取数据能力过渡到后期的获取技术 能力、甚至业务能力,而对于开发者来说,API技术能力的服务化和业务化将愈发重要。 使用API的目的 1. 57.7% 22.0% 20.3% 使用API提供的能力完成功能交付, 避免重复开发,提高效率 调用API,从外部服务获取数据 两项都有 13 API使用者最看重的特征 易用性、API文档准确详尽、服务可用性是API使用者最为看重 的特征 API使用者在决定是否使用一款API时,超过半数的受访者更看重API的易用性,同时 有超过40%的受访者还会考虑API文档准确详尽、服务可用性、服务响应及性能。此外, 在长时间使用过程中,使用者还希望API功能和生命周期设定切合实际期望,如及时的数据 安全、良好记录的变革及缺陷等。 由此可以看出,对于使用者而言,当API能力满足当前需求时,更加看重同类API产品 在具体使用上的体验及稳定性、应用性、可用性等特质,这预示着同类API产品间的竞争除 了产品本身能力的维度外,更加优质的后续服务和使用体验,也会赢得更多用户的青睐。 2. 良好记录的变更及缺陷 响应内容符合规范且易于消费 可信任的提供者 技术支持与客户服务 底层架构可扩展性 易于维护代码 活跃的社区/论坛 易用性 API文档准确详尽 服务可用性 服务响应及性能 API使用的学习成本 数据安全 API成本 其他 25.2% 22.6% 22.5% 21.2% 20.4% 19.9% 13.0% 50.2% 46.0% 42.6% 40.2% 35.4% 34.8% 12.9% 0% 10% 20% 30% 40% 50% 60% 0.4% API 使用者的需求 14 使用者希望API门户中提供哪些和API调用相关的功能 受访者渴望更高效找到合适的API,并快速了解API的具体能力、掌 握使用方式 在对受访者进行的API门户能力调研中显示,希望API门户能够提供在线API调试、API 参数说明、API全局搜索、SDK示例代码这4项功能的受访者比例均超过40%,受访者更希 望能够通过门户尽快找到所需要的API,并快速了解其具体能力和调试应用。 3. API参数说明 API全局搜索 SDK示例代码 API错误码详情 API文档展示 调用监控统计 身份认证 在线CLI 订阅申请 44.8% 在线API测试 46.8% 44.8% 43.5% 36.4% 31.2% 19.4% 19.3% 17.6% 0% 10% 20% 30% 40% 50% 13.9% 其他 0.5% API 使用者的需求 15 API开发者策略和行为画像 本章试图站在API开发者的角度,探求 其开发API的根本动力、主要目的、功 能考量以及开发者行为画像 第三部分 减少开发成本/时间,提高效率 便于与外部伙伴合作 有助于提供产品或服务的功能扩展 便于外部生态开发者参与 加速数字化转型(互联网、移动、云计算等) 以API产品作为盈利方式 增强移动应用 从外部产品获取数据或功能 遵循合规要求 48.3% 便于在内部系统、工具和团队间协作 55.7% 36.5% 36.0% 34.0% 22.5% 18.6% 17.3% 16.7% 14.5% 0% 10% 20% 30% 40% 50% 60% 大部分开发者将优化内部系统、工具和团队协作作为开发API的主要 目的,因此更强调可用性,很少将API产品用于盈利 在受访的开发者中,开发API的主要目的依然是面向内部的,有55.7%的组织希望通过 开发API优化内部系统、工具和团队间协作,48.3%的组织希望能够减少开发时间/成本、 提高效率;近3成的受访者表达了希望API能够促进外部合作,如API能够便于与外部伙伴 开展合作,以及便于外部生态的开发者参与;仅有18.6%的受访者将API产品作为盈利方 式。由此来看,API应用独立营收尚不被大多数团队所考量,一定程度上说明当前API应用 行业的竞争还处于蓝海时代。 开发API的目的决定了开发者将如何对其进行衡量,无论提供内部或外部使用,API的 可用性都是最重要的衡量标准。而在面向外部使用者时,API的调用次数、订阅/用户数量 也比利润/收入更受关注。 开发者开发API的最大动力 开发者衡量API成功的标准 1. API的可用性 API的调用次数 开发者体验 订阅/用户数量 提交及解决的问题数 利润/收入 61.3% 43.6% 41.0% 34.6% 28.3% 22.0% API 开发者的策略和行为画像 17 在可用性和可靠性的平衡上,开发者普遍更侧重可用性,对可靠性的 关注稍逊一筹,这与API使用者的关注点基本一致 在程序员资源有限的情况 下,如何平衡可用性和可靠性是 一个值得思考的问题,在我们的 调研中,受访者对可用性、性 能、功能性等方面的考量明显高 于安全性、扩展性、可维护性等 关于可靠性的考量。 在对API应用的关注方向 上,提供者与使用者的关注点基 本相同,但使用者更关注API应 用接入后的稳定性,在这方面 API开发者的关注度有所欠缺。 API开发者对于 APIs / Web Services主要的考量点 2. 性能 可用性 功能性 安全性 开发友好 扩展性 可维护性 65.4% 63.7% 60.1% 59.1% 42.3% 27.7% 31.4% API 开发者的策略和行为画像 18 开发者所使用的开发IDE 华为云CloudIDE VS Code Visual Studio Eclipse PyCharm Vim/Emacs HBuilderX Sublime Atom 13.7% IntelliJ IDEA 34.7% 12.6% 11.9% 11.6% 6.9% 2.7% 2.0% 0.9% 0% 10% 20% 30% 40% 0.8% 其他 2.0% 目前Java仍是API开发的主要语言,相应的,IntelliJ IDEA成 为API开发者首选的集成开发环境 客观上来说,Golang被普遍认为更适合写接口,其开发、运行更快,且部署环境简 单。但从统计结果来看,Java是目前API开发的主流语言,近半数的受访者及其团队还是 选择了自己最熟悉的编程语言。 在开发环境的选择上,与Java作为主流开发语言相对应的,IntelliJ IDEA作为业界公 认的最好的Java开发工具,也成为了在受访者中应用最多的IDE。另外,开发者使用相对 较多的华为云CloudIDE、VSCode、Visual Studio也都是当下较热门的IDE。 开发者所使用的开发语言 3. Python C+ Net C Go PHP C# Ruby Rust 9.9% JavaScript 11.2% Java 48.8% 9.1% 6.0% 4.4% 3.1% 2.7% 2.0% 1.3% 0% 10% 20% 30% 40% 50% 0.2% 其他 0.5% API 开发者的策略和行为画像 19 API 开发者的策略和行为画像 API开发需要广泛借助各类工具,涵盖设计、文档管理、测试等各个 环节,但普遍将易用性视为选择工具的重要关注因素 从开发工具的使用上,我们不难看出开发者对于工具的依赖,开发者使用的工具类型覆 盖了设计、文档管理、测试等API开发管理周期的各个环节,且各类开发工具的使用比例相 近,API设计器、API功能/性能/压力测试工具、编码规范工具、源码版本管理工具、API网 关工具、API文档工具、单元测试工具、服务虚拟化工具、代码评审工具在受访者中的使用 率均超过了30%。 而在同类型开发工具的选择上,大部分开发者首先关注开发工具的易用性。另外,与现 有工具的集成、使用效率、先进的功能/特性等也成为开发者重点考虑的因素,而对于是否 开源、是否拥有活跃的社区、学习曲线的关注度并不高。 4. 编码规范工具 源码版本管理工具 API网关工具 API文档工具 单元测试工具 服务虚拟化工具(Mock) 代码评审工具 安全测试工具 API调用分析 37.4% API功能/性能/压力测试工具 37.9% API设计器 38.5% 36.2% 34.6% 33.2% 32.9% 32.2% 31.4% 21.1% 0% 10% 20% 30% 40% 12.9% API市场门户 9.7% 开发者使用哪些API相关的开发工具 20 在评估API工具时,开发者优先考虑哪些因素 与现有工具的集成 效率 先进的功能/特性 对脚本的支持 成本 是否开源 是否拥有活跃的社区 是否有现成客户案例(最佳实践) 学习曲线 43.2% 易用性 58.5% 43.1% 39.8% 28.1% 26.4% 22.5% 21.2% 19.5% 0% 10% 20% 30% 40% 50% 60% 18.4% API 开发者的策略和行为画像 21 API设计流程和工具 在本章中,我们聚焦API产品生命周期 的一个重要阶段API设计,观察开 发者如何看待、以及使用哪些标准和工 具实现API设计流程 第四部分 半数开发者已经拥有正式的API设计流程,近四成开发者已经实现了 文档驱动的设计方式 建立设计流程的重要性已经得到了开发者的普遍认可,共计约75%的开发者对拥有正 式的API设计流程持正面态度,其中约48%的开发者认为设计流程非常重要、且已经建立 设计流程。 而从设计方式来看,约48%的开发者停留在代码驱动的设计方式,也有38%的开发者 已经实现了文档驱动的设计方式。 显然,API应用的开发正在向成规模、成体系的团队化开发模式演进,这将加速API应 用的快速创新和发展,并对API应用的后续服务提供保障。在这样的背景下,API开发文档 中记录的详细信息将在日后成为团队协作共享的宝贵资源,其重要性愈发凸显。 是否建立正式的API设计流程 目前的API设计方式 1. 有,设计非常重要 目前没有,未来可能有 有,设计不是很重要 1% 48% 27% 6% 18% 没有 不确定 代码驱动:在编写好代码之后再在代码中补充API注解, 然后生成API文档 文档驱动:在编写代码之前先设计好API定义,然后生成 框架代码 无固定方式 其他 48% 38% 1% 13% API 设计流程和工具 23 RESTful作为优秀的接口设计标准被广泛使用 RESTful是目前使用最为普遍的一种接口设计方式,作为一个优秀的接口设计标准, 被54.4%的受访者采用。 客观来说,兼容性和可扩展性仍然是软件设计的主要挑战,RESTful风格的API具备 的天然优势使其受到广大开发者欢迎,例如通过HTTP协议降低客户端的耦合、具有极好 的开放性,显然已经取代了SOAP和WSDL等接口设计。 但并没有哪种标准是必然优于另外一种的,如gRPC和RESTful API都提供了一套通 讯机制,但gRPC有更加严格的接口约束条件,且能够大幅减少需要传输的数据量,在需 要对接口进行严格约束、或者对于性能有更高要求的场景更加适用。 通用的API或Web Service定义标准的使用情况 2. Websocket AsyncAPI WSDL API Blueprint SOAP Thrift WADL RAML ISO 8583 17.1% GraphQL 19.7% 16.8% gRPC Socket 24.5% REST 54.4% 23.0% 15.1% 15.1% 12.4% 9.3% 9.0% 5.5% 0% 10% 20% 30% 40% 50% 60% 4.2% 我们没有用到API标准 2.8% API 设计流程和工具 24 开源编辑器(如Swagger编辑器) API管理工具中的设计器(例如Apigee、Azure) IDE 文本编辑器 Postman SwaggerHub MuleSoft Anypoint API Designer Apiary Stoplight 26.4% 18.7% 17.1% 12.4% 10.2% 6.0% 3.0% 2.2% 0% 10% 20% 30% 1.6% 其他 2.4% 开源编辑器依然是开发者进行API设计的首选工具,大部分开发者希 望获得或已经实现了通过API设计文档自动生成代码的能力 创建优质的API需要借助强大的工具、语言以及档案所优化的迭代流程来实现,工具和 技术可以从根本上改善这一设计过程。接口描述语言提供支持性的工具以简化编写描述的任 务,这一点已经非常常见,RAML、Swagger等单一功能的开源编辑器都提供了优秀的编 辑工具以支持各自的语言,它们依然是开发者进行API设计的首选,有26.4%的受访将其作 为主要工具,而API管理工具普遍能够提供更全面的功能和更简洁的页面,也有18.7%的受 访者使用。从另一个角度来看,有41%的开发者表示能够通过API设计文档自动生成代码, 另外有25%的开发者希望通过工具获得借助设计文档自动生成代码的能力。 通用的API或Web Service定义标准的使用情况 能否通过API设计文档自动生成代码 3. 能够 不能 41% 34% 25% 希望API开发工具能提供从API设计自动生成代码功能 API 设计流程和工具 25 API测试流程和工具 本章我们将看到API测试在API产品生 命周期中的重要作用,还涉及不同测试 工具的使用情况、提供高质量API面临 的主要障碍等问题 第五部分 质量低下的API直接影响项目交付时间、SLA要求,严重时甚至对 使用者造成用户或公司品牌损失 随着第三方API在项目中扮演愈发关键的角色,API的质量将直接影响软件项目的交付 质量。23.9%的受访者认为低质量的API会延长项目交付时间,18.6%的受访者认为会导 致项目无法满足SLA。同时有20%的受访者担忧,质量低下的API会导致公司丢失客户或 用户,并对公司品牌造成损失。显然,提供更好的API质量保障方案,将为使用者选择API 增加更多信心。 因API质量低下给使用者带来的主要风险 1. 延长项目交付时间 无法满足SLA(服务等级协议) 降低项目交付速度 影响内部依赖于API的团队丢失客户/用户 对公司/品牌造成损失 合规风险 23.9% 18.6% 17.6% 16.7% 14.2% 3.2% 5.8% API 测试流程和工具 27 缺少预算 没有时间 缺少工具/系统之间的集成 缺乏经验和技能 缺少足够的精力 缺少有效协作 缺乏合适的工具和技术 16.4% 6.3% 0%0% 10% 20% 30%30% 20% 10% 11.6% 11.9% 13.4% 12.1% 11.6% 12.4% 20.9% 16.8% 16.1% 20.8% 13.8% 15.1% 缺乏合适的工具和技术是保障API质量的最大障碍 在保障API质量的调研中,缺乏合适的工具和技术是使用者和开发者面临的最大障碍, 分别有20.9%的使用者、20.8%的开发者选择了该选项。其他障碍中,较为集中的选项还 包括:缺少足够的精力、缺乏经验和技能、缺少有效协作等。 可以得知,在尚未成熟的API生态中,市场亟需好的API开发工具和经验指导,具备专 业能力的API开发机构或将加速API生态的建立和发展。 使用者(左侧)和开发者(右侧)在保障API质量方面面临的最大障碍 2. API 测试流程和工具 28 无论是API开发者还是使用者,已经建立API测试流程的受访者均超 过半数,API测试将成为整体自动化策略的重要组成部分 在API使用者中,52%的受访者表示已建立正式的API测试流程,而在开发者中这一比 例提高到了56%,另外分别有26%和22%的受访者表示目前没有,但未来可能建立测试流 程。 显然,建立API测试流程的重要性已经成为共识,伴随越来越多的公司转向DevOps方 向,以实现持续集成和持续部署开发,这意味着更快的反馈效率和更短的交付时间,API测 试将成为整体自动化策略的重要组成部分。 API使用者(外层)和开发者(内层)是否建立正式的API测试流程 3. 有,测试非常重要 目前没有,未来可能有 有,测试不是很重要 52% 56% 26% 22% 3.9% 5% 1% 1.9% 16.2% 16% 没有 不确定 API 测试流程和工具 29 大多数受访者使用过多个API 测试工具,YAPI、Postman应用最 为广泛 目前,有多种第三方工具帮助工程师实现API的自动化测试,其中使用最广泛的是:提 供综合接口管理服务的YAPI、以及高效的探索型API测试工具Postman。 在所有受访者中,76.5%的API使用者和43.2%的API开发者使用过多个API测试工 具,表明API测试工具的市场竞争较为激烈,也说明还没有哪款测试工具赢得了用户的绝对 信任。 API使用者使用哪些API测试工具 4. Karate DSL Dredd REST-Assured Katalon Pact JMeter Tricentis Tosca Parasoft Insomnia 15.4% Eolinker 17.8% 14.6% ReadyAPI/soapUI RAP 26.8% API Fortress 27.6% Postman 38.5% YAPI 42.1% 19.0% 14.5% 13.9% 11.5% 11.2% 10.1% 7.1% 0% 10% 20% 30% 40% 50% 9.1% Apigee 22.6% API 测试流程和工具 30 API开发者使用哪些API测试工具 RAP Dredd REST-Assured Karate DSL Insomnia Katalon Pact Parasoft Tricentis-Tosca 8.6% Eolinker 11.0% 7.9% JMeter API Fortress 19.7% ReadyAPI/soapUI 26.9% Postman 38.7%YAPI 58.2% 13.1% 7.1% 5.8% 5.7% 4.2% 3.9% 2.2% 0% 10% 20% 30% 40% 50% 50% 3.9% Apigee 17.8% API 测试流程和工具 31 第六部分 在本章中,我们将探讨如何认识并发挥 API文档的重要价值,包括API文档流 程的建立、对文档工具的功能需求、文 档工具的使用情况、以及文档自动生成 能力的实现 API文档的使用 33 虽然约七成受访者已建立正规的API文档流程,且超过半数受访者对 所在组织的API文档完善程度给出正面评
展开阅读全文