写点什么

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:006053
用户头像

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

关注

评论

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

java 组件开发的准备工作

努力努力再努力

1月月更

Flutter 让你的Dialog脱胎换骨吧!(Attach,Dialog,Loading,Toast)

小呆呆666

flutter ios android 前端 大前端

C++ 动态内存分配的问题,你都懂了吗?

小梁编程汇

c++ 堆内存管理 内存分配 smart pointer

数据库批量插入这么讲究的么?

秦怀杂货店

Java 数据库 批量插入

(1-2/2)AI的落地:读caoz的文章有感

mtfelix

无限生长 2022Y300P

盘点 2021|一个普通人的不普通的2021

慕枫技术笔记

程序人生 盘点 2021

LabVIEW纹理分析(基础篇—9)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 纹理分析

架构训练营 week4 作业

红莲疾风

「架构实战营」

获奖公布!OceanBase 第一届技术征文大赛圆满收官!

OceanBase 数据库

开发者 征文大赛 oceanbase OceanBase 开源

《张汉东的 Rust 实战课》学习笔记

贾献华

川大记忆

wood

300天创作 川大

03 Prometheus之架构及数据模型

穿过生命散发芬芳

Prometheus 1月月更

盘点 2021 | 云原生拥抱之路

xcbeyond

程序人生 云原生 盘点2021 xcbeyond

一个cpp协程库的前世今生(九)协程参数与返回值的处理

SkyFire

c++ cocpp

Prometheus云原生监控:运维与开发实战

方勇(gopher)

云原生 #Prometheus

千万级学生管理系统的考试试卷存储方案

swallowluo

架构实战营 #架构实战营 「架构实战营」

设计微博评论的高性能高可用计算架构

drizzle

「架构实战营」

世界女性科技群落(五):数字化黄金时代,东南亚女性都是隐藏的阿尔法

脑极体

hw8-设计消息队列存储消息数据的MySQL表格

WWH

架构实战营

一份简单够用的 Nginx Location 配置讲解

冴羽

nginx 后端 博客 后端开发 博客配置

写时复制技术(COW)详解

小梁编程汇

性能优化 操作系统 CopyOnWrite;

滴滴夜莺监控发布v5正式版,定位Prometheus企业版

巴辉特

Prometheus zabbix Open-Falcon Nightingale

【新年互动搞起!】元旦快乐!这里是2022年的 OceanBase

OceanBase 数据库

开发者 OceanBase 社区版 2022年新年祝福 元旦

架构实战训练营-模块5-作业

温安适

「架构实战营」

(1-1/1)底层逻辑读后感:三种对错观四类表述

mtfelix

无限生长 2022Y300P

分布式系统必知必会

小梁编程汇

分布式 分布式系统 共识算法 分布式通信算法 #raft

Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据

万俊峰Kevin

微服务 stream go-zero Go 语言

在线JSON转CSV,TSV工具

入门小站

工具

SpringMVC框架基础知识(02)

海拥(haiyong.site)

28天写作 1月月更

首次!中西方数据库大咖“时空对话”,为中国分布式数据库开发者大会打call

OceanBase 数据库

OceanBase 开源 OceanBase 社区版 开发者大会

【LeetCode】统计特殊四元组Java题解

Albert

算法 LeetCode 1月月更

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