写点什么

Google 公开了云服务 API 设计指南

  • 2017-03-14
  • 本文字数:741 字

    阅读完需:约 2 分钟

Google 公开了用于创建 HTTP 或 RPC API 的 API 设计指南。对于创建连接 Google Cloud Endpoints 的 gRPC API 的开发人员来说,这些设计原则更值得推荐使用。

早在 2014 年,Google 在创建云服务API 其它服务API 时就开始在内部使用了这些设计指南。指南中探讨了HTTP 或RPC API 的设计。虽然HTTP API(也称为REST API)的优点是公认的,但是它们距离实用尚有时日。Google 推荐RPC 尤其是其变体 gRPC 。据 Google 说,虽然大部分的因特网 API 是 HTTP,但是通常被云服务和服务提供商内部使用的是 RPC,并在数量上远高于 HTTP API。

对于通过方法操作一个或多个资源这样的场景,Google 推荐在设计 RPC API 时使用类 REST 方法。资源(也可称为域实体)使用 URI 表示,也可以在网络路径格式后面加上唯一的名称(ID)。同一类型的资源将组织成同一集合。

使用的标准方法包括CreateDeleteGetListUpdate。对于不能映射到任一标准方法上的操作,例如数据库事务,用户也可以创建自定义方法。推荐使用较少的方法来操作尽可能多的资源。

在创建资源时,推荐执行如下步骤:

  • 确定 API 提供的资源类型。
  • 确定资源间关系。
  • 基于类型和关系确定资源的命名模式。
  • 确定资源模式。
  • 为资源附加最小的方法集。

Google 使用“语义化版本”标准命名版本,命名使用三个数字,形式为“主版本. 次版本. 补丁”。预发布版本在命名时添加了一个前缀,例如“1.0.0-alpha”。

对于资源、标准、自定义方法、标准域、错误、使用proto3 创建API 等方面,指南提供了更多细节和例子。

查看英文原文: Google Makes Public Their API Design Guide


感谢张卫滨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-14 19:006262
用户头像

发布了 227 篇内容, 共 81.1 次阅读, 收获喜欢 28 次。

关注

评论

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

对接企业微信,客户关系管理也可以很简单!

CRMEB

Room:又要写业务代码了?看看我吧,给你飞一般的感觉!

编程的平行世界

数据库 Android; android jetpack

技术分享| HTTP 代理

anyRTC开发者

https 音视频 网络协议 HTTP

微信内H5页面唤起小程序&App

南城FE

前端 微信开发 7月月更

CRMEB Pro v1.4,让用户体验更出彩!

CRMEB

JAVA编程规范之集合处理

源字节1号

软件开发 后端开发

手机怎样控制led显示屏发视频?

Dylan

ipad 手机 wifi LED LED显示屏

浅谈 Slack Channel 支持的一些提高工作效率的特性

汪子熙

远程办公 即时通讯 SAP Slack 7月月更

DBPack 读写分离功能发布公告

峨嵋闲散人

分布式事务 分库分表 读写分离 dbmesh Database Mesh

【福利活动】给你的代码叠个 Buff!点击“茶”收好礼

亚马逊云科技 (Amazon Web Services)

Lambda Code

java零基础入门-综合案例(File类+递归)

喵手

7月月更

【LeetCode】最长的斐波那契子序列的长度Java题解

Albert

LeetCode 7月月更

RocketMQ系列一:入门级使用演示

hum建应用专家

云计算 RocketMQ

许式伟:Go+ 演进之路

七牛云

golang 编程语言 go+

激情的开头,大意的结局,Python反爬加更,好友求助米哈游的API,给他安排上

梦想橡皮擦

Python 爬虫 7月月更

泛云桌面关键技术分析

A池伟

云桌面 算力网络

龙蜥社区招募推广大使&体验官啦!| 人人都可以参与开源

OpenAnolis小助手

开源 龙蜥社区 社区建设 官网 体验官

软件研发效能需求价值流分析专题

思码逸研发效能

研发效能 软件研发

蛋糕可以一刀切,研发需求可以吗? | 敏捷实践

LigaAI

程序员 敏捷 产品经理 需求分析 敏捷管理

SpringBoot自动装配原理

急需上岸的小谢

7月月更

LeetCode-111. 二叉树的最小深度(java)

bug菌

Leet Code 7月月更

【C语言】进阶指针night

謓泽

7月月更

有证书有目录!|海泰密码服务平台

电子信息发烧客

服务网格中 sidecar 流量治理与多协议嗅探

博文视点Broadview

QT | VS2017 + Qt5.14.2环境搭建

YOLO.

环境搭建 vs Qt Creator 7月月更

web前端培训如何使用CSS自定义属性实现骨架屏

@零度

CSS 前端开发

Android/Unity大乱斗-完整双方集成交互指南

芝麻粒儿

android Unity 7月月更

python 中Mixin混入类的用法

杨彦星

Python

Python 入门指南之交互式输入行编辑历史回溯

海拥(haiyong.site)

Python 7月月更

爱奇艺加入龙蜥社区,携手打造多元化视频生态底座

OpenAnolis小助手

开源 爱奇艺 龙蜥社区 CLA 社区建设

Google公开了云服务API设计指南_REST_Abel Avram_InfoQ精选文章