为什么要 API 优先?

2023-11-14

最近关于 API-First (API优先)作为设计和开发方法的讨论很多,虽然通向 API-First 的途径有很多,但通常推动 API-First 的一般都是 API 架构师、API 设计师和 API 平台负责人等,很好理解,因为他们对组织中 API 的效率、互操作性和质量最感兴趣。

因此,这些支持者制定了与团队其他成员共享的 API 指南和标准。对于开发人员来说,API 优先似乎是一个崇高目标,但实施该方法时意图和紧迫性经常会减弱。结果导致开发者可能难以遵守这些政策。

管理层关心 API 管理,那其他人为什么也应该关心呢?


1. 开发者喜欢 API-First 的原因

理论上讲,开发者知道 API-First 可以提高他们的生产力,提高代码质量,并改善他们构建的整体用户体验。但当深入了解为什么开发者喜欢 API-First 时,这里有一些原因:

  • 构建人们想要的东西: 通过合同或模拟与利益相关者进行早期社交化,使他们对所构建的内容充满信心,而无需在开发过程后期重新搭建和重组。

  • 节省时间: 一旦初始设计达成共识,API 合同就可以用于自动生成代码、文档、合同测试和模拟服务器。

了解 API-First 方法所能实现的结果是迈向 API-First 之旅的第一步。我们看到很多团队完全是因为开发者希望自动生成代码、文档、测试和模拟才回归到实践中去支持 API-First 。


2. 开发者不喜欢 API-First的原因

当你观察那些使用 OpenAPI 等工具设计 API 的团队时,他们常常会对以下几点产生疑虑:

  • 耗费更多时间: 在设计过程中需要进行前期工作,并在API合同上达成利益相关者之间的一致意见
  • 认知负担: 如果团队没有现有的定义和指南可供参考,从零开始规划用户场景可能会令人不知所措
  • 足够好: 目前的流程运行良好,尽管有更好的方法可以采用,但目前还没有改变它的优先级

接下来让我们看看各个团队是如何解决这些疑虑并赢得开发人员支持。


3. 推动组织内 API-First 的方法

对于开发者来说,采用新流程是很自然的,但要充分利用 API-First 带来的好处,最终目标和实现方法得到领导层和实践者的支持,十分重要。根据组织所处 API 之旅的阶段,有不同方法可以提高采用 API 优先设计和开发过程。

  • 提高对 API-First 方法能够实现成果的认识

  • 建立治理机构或负责人以制定最佳实践和流程,并为开发者提供支持

  • 提供最佳实践和指南以简化决策过程

  • 创建一个可供参考的内部定义目录

  • 提供可重复使用的组件以加快开发速度并保证一致性

  • 自动化反馈环节如 API 检查与其他基于政策编码规则

  • 通过 API 指标(如开发时间、错误、使用情况和采纳率)衡量进展情况。

  • 将激励措施与关键目标相结合,引导期望行为


4. API-First 是一个旅程

采用 API-First 设计在前期规划,以及与利益相关者达成一致方面,都需要时间。但是,一旦设计得到认可,它可以在整个 API 全生命周期中自动生成交付物,从而节省时间。由于减少了返工,在后续开发周期中也节省了时间。

同样,在 API-First 之旅的最开始阶段,需要花费时间和资源来制定指南,并创建可复用的组件。但是一旦流程确定下来,团队将看到开发者生产力、代码质量以及用户体验方面的提升,这进而导致整体上开发人员满意度提高。

Eolink 就是一家 API-first 的优秀案例,通过 DTDD(文档与测试驱动开发 )和 API First 理论,致力于让 API 管理更简单,为企业用户提供一站式、智能化的 API 全生命周期解决方案,产品能力覆盖 API 规范化治理、API 研发流程优化、API 性能和安全保障、API 数据服务开放及交易等创新服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么要 API 优先? 的相关文章

  • 使用 SAS EG 通过代理从 API 下载 JSON 文件

    我正在尝试使用瑞士当局提供的 API 对公司网络内的地址进行地理编码 我的公司使用带有用户名和密码的代理服务器 我是 SAS EG 的新手 这是我迄今为止拥有的代码 我必须匿名一些内容才能被允许在此处发布 filename response
  • 使用 PHP 发布到 Blogger

    我在使用 PHP 的 Blogger API 时遇到问题 我需要的是能够将新的博客文章发布到我的博客帐户 我使用的代码取自 Google API 页面 http code google com intl nl apis blogger do
  • Android 添加新日历

    我已经检查了所有从 Android 应用程序中创建新日历的方法 我见过的唯一方法是在最新的 api 版本中使用新的 Calendar API 但这似乎只有在您使用时才有效CalendarContract ACCOUNT TYPE LOCAL
  • 如何在S3中存储数据并允许用户使用rails API / iOS客户端以安全的方式访问?

    我是编写 Rails 和 API 的新手 我需要一些有关 S3 存储解决方案的帮助 这是我的问题 我正在为 iOS 应用程序编写一个 API 用户在 iOS 上使用 Facebook API 登录 服务器根据 Facebook 向 iOS
  • Magento 2 REST API 客户自定义属性

    Magento 2 REST API 文档解释了在更新或创建客户时设置custom attributes 的方法 http devdocs magento com swagger index 20 html http devdocs mag
  • 从我自己的博客获取帖子[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何 API 通过它我可以从 wordpress com 上我自己的博客获取帖子并将它们放在我的
  • 在react.js中调用API渲染数组图片

    我有 API 其中包括 pictures http storage web source images 2016 10 28 edac054f88fd16aee7bc144545fea4b2 jpg http storage web sou
  • 如何使用 Twitter Api 在单个请求中获取 20 多个列表成员?

    我想让超过 20 个用户在单个请求中使用 twitter api 有什么参数可以指定吗 我正在使用这个APIhttp api twitter com 1 Barelyme Politics members xml cursor 1 http
  • 如何在WCF Rest服务中从流上传图像

    我正在尝试创建 wcf 服务 该服务将上传 pdf doc xls 图像等文件 但 pdf txt 文件正在上传并正确打开 但是当我尝试上传图像文件时 文件正在上传 但是图像不可见 OperationContract WebInvoke M
  • 您可以使用 JSONP 检索您的 Skype 状态吗?

    有谁知道使用 JSONP 获取 Skype 状态的 URL 到目前为止我只找到了一个 XML 状态 URL http mystatus skype com username xml 我正在尝试使用 AJAX 查询 Skype 是的 我可以使
  • 使用 PHP 将表单数据发送/发布到 URL [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个通过 POST 提交的表单 提交表单后我捕获变量 如何连接表单数据 然后将其 POST 到 url 然后重新定向到感谢页面 这不是确
  • Web Api - 不允许捕获 405 方法

    截至目前 Web api 应用程序针对 405 方法不允许错误返回以下响应正文 我正在尝试更改响应正文 但我不知道如何使用委托处理程序 ApiControllerActionSelector 或过滤器 谁能帮我捕获服务器端的 405 错误
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • PHP 版本如何匹配“API=yyyymmdd”签名/标签?

    是否有明确且可靠的来源来找出哪个 PHP 发行版本 x y z 携带 使用哪个 API yyyymmdd 签名 标签 PHP 的版本控制存储库是 PHP 版本与其 API 日期版本之间相关性的权威来源 请记住 仅主要版本PHP 的版本 例如
  • 带有 OAuth2 的 YouTube API v3:更新和删除失败并出现“权限不足”错误

    我在尝试着update and delete视频使用YouTube API v3 https developers google com youtube v3 docs videos with OAuth2 用于身份验证 https dev
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • Web 应用程序使用 API 来完成一切?

    我即将开始为我的公司规划一个内部项目管理工具 API 一直让我疑惑 首先创建 API 并使用这些 API 调用构建实际站点而不是实施两次 是否会被视为不好的做法 效率太低 让我知道你的想法 我完全同意开发 API 将为您提供解耦的架构 并且
  • 有没有办法以编程方式访问 Google 的搜索引擎结果? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 谷歌是否提供了一种以编程方式查看特定查询的搜索引擎结果的方法 我想构建一个跟踪应用程序 以便用户可以看
  • 循环选项在 youtube js api 中不起作用

    我想知道为什么我的代码不循环播放视频 除了循环选项之外 一切正常 我真的需要它 多谢 div You need Flash player 8 and JavaScript enabled to view this video div

随机推荐

  • 大数加法(C++实现)

    最常规的大数加法 两个数都是非负的整数 思路 用字符串的方式去存储我们需要计算的数 但是要注意的一点就是我们是倒过来存储这个大数的 比如 123456789 我们存储的时候是存成 987654321 为什么要这么干 我觉得是为了便于后面我们
  • C++ :websocket 通讯下的五种 I/O 模型

    目录 I O 多路复用 一种同步 I O 模型 非阻塞与阻塞 select poll epoll 起因 改善 select 与 poll 的差别 I O 模型 阻塞 I O 模型 非阻塞 I O 模型 I O 多路复用模型 信号驱动 I O
  • php curl 返回文件头,php curl请求信息和返回信息设置代码实例,特别是在请求过程中存在重定向的时候获取请求返回头信息...

    在用curl抓取网页内容的时候 经常要知道 网页返回的请求头信息 和请求的相关信息 特别是在请求过程中存在重定向的时候获取请求返回头信息对分析请求内容很有帮助 下面就是一个请求中存在重定向的例子 我们的目的是要获取最终实际请求的url地址
  • linux服务器做游戏服务器配置,详解Linux中搭建常用服务器

    1 搭建telnet服务器 2 搭建DHCP服务器 3 搭建 服务器 4 搭建sendmail服务器 5 搭建FTP服务器 6 搭建web服务器 安装 apache tomcat 7 搭建samba服务器 一 搭建telnet服务器 1 查
  • Sorry, The number you dialed is power off.

    对不起 您所拨打的电话正在通话中 请稍后再拨 Sorry The subscriber you dialed is busy now please redial later 您好 您所拨打的号码是空号 请核对后再拨 Sorry The nu
  • RestTemplate使用HttpClient连接池

    文章目录 RestTemplate使用HttpClient连接池 ClientHttpRequestFactory SimpleClientHttpRequestFactory SimpleClientHttpRequestFactory
  • 基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目 基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现 1 协同过滤的算法思想 1 1 基于内容的推荐中不足之处 基于内容的推荐方法用户易于理解 简单有效 但是它的缺点也十分明显
  • 导入QML文档目录

    Importing QML Document Directories 导入QML文档目录 A local directory of QML files can be imported without any additional setup
  • 【1.查看显卡信息2.解决显卡设置不生效问题】

  • Kafka3.0.0版本——消费者(消费者组初始化流程图解)

    一 消费者组初始化流程图解 每个consumer都发送JoinGroup请求 如下图所示 选出一个consumer作为leader 如下图所示 把要消费的topic情况发送给leader 消费者 如下图所示 leader会负责制定消费方案
  • C++ map下标操作[]和insert区别

    在构建map时候 我们是使用insert和 有什么区别呢 哪个更好呢 哪个效率更高呢 哪个更安全呢 首先需要明确的是 map中不允许存在相同的key Because map containers do not allow for dupli
  • conan包管理工具(1)

    conan包管理工具 Conan 是一个开源的 跨平台的 去中心化的 C 包管理器 通过它可以安装 解决构建依赖 更重要的是可以直接集成到 Build System 中使用 同时它也允许你搭建自己的私有仓库 供私有项目使用 具体到细节 当向
  • 使用Node解析EML文件

    文章目录 什么是EML文件 实现EML导入 就这 winmail dat 编码 什么是EML文件 通过的说 电子邮件导出后的文件格式就是 eml文件 比如使用outlook 163邮箱等等电子邮件程序将电子邮件导出后 就可以得到 eml文件
  • 现在人工智能实验报告

    当前 大数据及人工智能成为国际竞争的新焦点 是引领未来的战略性技术 人工智能的发展与实验报告作为提升国家竞争力 维护国家安全的重大战略 格物斯坦表示 加紧出台规划和政策 围绕核心技术 顶尖人才 标准规范等强化部署 力图在新一轮国际科技竞争中
  • Hexo博客搭建(简化版)

    Hexo博客搭建 简化版 一 环境搭建 1 1 Git Git官网 下载界面 gt git version 1 2 Node js 1 2 1 下载安装Node js Node js官网下载界面 gt node version 1 2 2
  • sublime代码自动补全

    html标签自动补全 在preferences sublime settings里面加上 作者 茉花 链接 https www zhihu com question 21628492 answer 131097215 来源 知乎 著作权归作
  • windows系统中docker部署mysql后,使用navicate链接

    一 Windows系统启动docker中mysql 通过docker桌面版启动 二 通过命令行 查看是否开启远程连接授权 依次输入mysql命令 mysql uroot p show databases use mysql show tab
  • 【工具】——VSCODE调试C++时无法显示Vector,map等容器的值

    转载自 VScode调试C 代码时无法查看STL容器 string vector等 原始状态 解决方法 编辑launch json 加入如下设置 setupCommands description Test text python impo
  • error The engine "node" is incompatible with this module. Expected 解决方法

    1 如果是部署在服务器上 看下服务器node版本 版本过低会导致这种问题 2 如果使用构建工具 需要确定构建中的环境node版本 构建中的版本可能跟服务器版本也会有差别 如jekins中有设置node环境的配置
  • 为什么要 API 优先?

    最近关于 API First API优先 作为设计和开发方法的讨论很多 虽然通向 API First 的途径有很多 但通常推动 API First 的一般都是 API 架构师 API 设计师和 API 平台负责人等 很好理解 因为他们对组织