【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

业务流程层的 API

  • 2013-12-27
  • 本文字数:1152 字

    阅读完需:约 4 分钟

Netflix API 的工程主管 Daniel Jacobson 最近在 The Next Web 上发表了一篇文章,他表示:我们需要理解谁是 API 的使用对象,以及他们的使用的方式,并在此基础上进行 API 设计。这看起来是显而易见、理所应当的事情,然而 Daniel 接下来写道:过去那种传统的“万应灵药”般的面向资源的 API,或许并不能满足使用我们 API 的用户中最重要的那些人。良好的 API 设计不只是关于“资源建模、负载格式、如何管理系统版本以及安全”,更加根本的问题是:“谁是这些 API 的主要受众,以及我们应该如何来针对他们进行优化?”

面向资源的 API 或许适用于“广泛的未知开发者”,但实际上大部分组织机构需要满足的是“少量已知开发者”的需求,以及特定的用例。“他们或许就是 API 团队楼下的工程师、或许是一家被雇用以开发 iPhone 应用的合约公司,又或是来自合作公司的一支工程团队,”Daniel 写道,而优化 API 的机会正蕴藏在这些情景中。

许多公司正在逐渐向其体系架构中引入 API 编排层——Daniel 将其定义为“一个抽象层,它运用通用建模的数据元素和 / 或特性,并以一种更具体的方式处理它们,从而为某个目标开发者或应用做准备。”Daniel 列出了部分编排层的关键准则如下:

  1. 大部分 API 提供者设计的目的,都是为了维护数据模型的纯净度。然而在构建 [编排层] 时,我们需要做好在某些时候牺牲纯净度以换取优化和 / 或性能的心理准备。
  2. 许多 API 团队设计 API,以求让自己更易于提供支持。然而在构建 [编排层] 时,我们需要做好可能会对增加团队工作复杂性的心理准备。
  3. 了解 API 受众的广度非常重要。针对受众的不同成分,有时候我们或许只需要 [编排层]。而在其他一些情况中,我们除了 [编排层] 之外,或许还需要 [万应灵药] 式的基础。

第二条准则让人想起了接口设计中常见的类似情况:为一个“聪明的”视频记录软件增加内部复杂度,以便让外部用户更易于使用。

在文章的最后,Daniel 给出了三个常见的用例,包括将编排层用于针对特定设备的包装器、支持一套基于查询的 API,以及提供基于经验的 API。Daniel 表示,针对特定设备的包装器是他所见过的最常见的用例,例如针对 iPhone 优化的 API 包装器。此类针对特定设备的包装器一般由 API 团队为特定消费者提供。相反,基于查询的 API 把权力交给了 API 使用者——让使用者掌控,“允许他们就像访问数据库一样,通过灵活的参数和负载去查询 [资源]”。

Netflix 采用的模型是基于经验的 API,同时也混合了其他两个用例——针对特定设备设计和实现,并由 API 用户所拥有的包装器。负责的部门被划分为 API 团队——负责以通用的、可复用的方式提供数据;以及使用者——掌握数据格式和交付。

Daniel 总结道,API 团队需要将 API 的使用者视作设计过程中的伙伴进行协作,以便尽可能地让最终用户获得最佳体验。

查看英文原文: The API Orchestration Layer

2013-12-27 07:592409
用户头像

发布了 256 篇内容, 共 67.3 次阅读, 收获喜欢 10 次。

关注

评论

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

Serverless 应用托管助力企业加速创新

Serverless Devs

阿里云 Serverless 云原生 应用引擎

【5分钟背八股】ZooKeeper和Reids做分布式锁的区别?

java易二三

redis zookeeper 程序员 计算机 八股文

更多openEuler镜像加入AWS Marketplace!

openEuler

Linux 操作系统 AWS openEuler

nginx反向代理缓存教程。

百度搜索:蓝易云

nginx 云计算 Linux 运维 云服务器

电商订单履约-卖家发货演化史

得物技术

重构 业务架构 企业号 8 月 PK 榜 履约 业务身份

MySQL三个重要日志

数新网络官方账号

MySQL 数据库

干货满满:多人语音聊天室源码开发解析

山东布谷网络科技

源码剖析

十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能

华为云开发者联盟

ide 开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

软件测试丨Chrome 115之后的版本,如何更新driver?

测试人

chrome 程序员 软件测试 自动化测试 chromedriver

OpenSSL 3.0.0 设计(三)|FIPS 模块

铜锁开源密码库

算法 信息安全 密码学 openssl 铜锁

深度解读智能化编码的技术架构与实践案例

阿里云视频云

云计算 编码 视频云

2022年移动游戏收入920亿美元,微信小游戏投放量增长五倍

没有用户名丶

项目启动会的正确打开方式

老张

项目管理 项目启动

IIOT WIFI5 solution-DR40X9-IPQ4019-IPQ4029 CPU-supports dual-band wireless connection-The most popular

wifi6-yiyi

wifi5

ABAQUS正版授权软件怎么下载?达索中国代理商思茂信息

思茂信息

abaqus abaqus软件 有限元仿真技术 有限元分析 结构仿真

SpringBoot单元测试实践——配置隔离篇

java易二三

Java 程序员 Spring Boot 计算机

SpringBoot使用spring.config.import多种方式导入配置文件

java易二三

Java spring 程序员 Spring Boot 计算机

GitHub登顶的 Java 面试八股文(2023金九银十最新)附答案详解

架构师之道

程序员 java面试

华为云联创营CTO领航班第八期:探索AI大模型的创新之路

新消费日报

jstat命令总结

java易二三

Java 程序员 JVM 计算机 科技

Nacos服务整合SpringBoot框架技术

java易二三

Java 程序员 Spring Boot 计算机 科技

9-7毕业设计,秒杀架构

家有两宝

架构实战营

直播平台源码优质平台技术:并行处理与线程优化的探索与实践

山东布谷科技

软件开发 源码搭建 直播平台源码 并行处理 线程优化

线上观看5万+,“芯”有灵“蜥”融合·创新!龙蜥社区走进 Intel MeetUp 回顾来了

OpenAnolis小助手

开源 芯片 intel Meetup 龙蜥社区

如何在 Ubuntu 22.04 上安装 Python Pip?

百度搜索:蓝易云

Python 云计算 Linux ubuntu 运维

3-6作业

家有两宝

架构实战营

火山引擎ByteHouse:一套方案,让OLAP引擎在精准投放场景更高效

字节跳动数据平台

大数据 云原生 Clickhouse 企业号 8 月 PK 榜

锐炫无畏,助威亚运!英特尔锐炫显卡成为杭州亚运会官方指定图形处理器

E科讯

探索YesPMP平台:您的一站式软件外包解决方案

知者如C

分享实录 | 将 NGINX 打造成功能强大的 API 网关(下)

NGINX开源社区

nginx api 网关 后端服务

HertzBeat 集群版开源,易用友好的开源实时监控系统!

TanCloud探云

Java GitHub 开源 程序员 监控产品

业务流程层的API_REST_Saul Caganoff_InfoQ精选文章