Google AIPs 小记

本文介绍了Google的API改进提案(AIPs),涵盖了标准操作、特殊接口、修订管理以及设计原则。强调了方便调用方使用、统一规范、幂等性和安全性。讨论了如批量操作、长运行任务、资源历史记录(修订接口)以及错误处理的细节,旨在提升API设计的质量和用户体验。
摘要由CSDN通过智能技术生成

Read the latest article and comment on Notion.

API Improvement Proposals

  • API 的大致分类

    • Standard methods: GET / List / Create / Update / Delete
    • Standard methods 和其他methods 的 batch operations
    • Standard methods 和其他methods 的 long-running operations
    • Jobs 接口
    • Import and export 数据接口
    • item method / collection method / db method / stateless method

    特殊接口

    • Revision 接口,一个资源的历史记录,之所以叫’revision’,是为了和API 的‘version’ 区分开
      • get,记得在返回的name 里加上revision id。

      • tag,给一个revision 加上human readable 的标签,之后revision id 和tag 都能用来get revision。

      • list

      • commit,基于最新版本的resource 创建revision,可以在一些条件下自动创建,也可以开放出来把时机判断交给用户。

      • rollback,把某个revision 设置成线上最新的数据。

      • delete。可以导致线上resource 变化,但是不能导致resource 被删除,当被删除的revision 是最后一个revision 时,应拒绝请求。

      • child revision。适当考虑一个资源下的某个子资源也有revision 的需求。

    • Purge 接口,当需要删除的数据量级超过Batch Delete 语义,考虑使用Purge
      • 支持使用 filter 来筛选出更多的资源,但是因为数量过大没必要返回。
      • 只有当 request 的 force == true 时才执行删除。
      • response 要返回 purge_count
      • 当request force == false 时,返回purge_count 和约100个 purge_sample
  • AIPs 体现出的设计原则

    **方便外界调用方的使用。**一些原则对内部API 要求过高了。

    • 统一规范:doc 详细cover 了很多细节。
      • 比如每个resource response 的第一个field 都得是 canonical name,无论request。
        • 对于collections response,则是 parent ,不是 name
      • 分页只返回 page_token 不返回 offset
        • token 可以代表更多信息。
        • 防止用户解析分页的内部逻辑,给接口更新带来灵活性。
        • token 一般3天后过期
      • order_by 字段也用string ,保证灵活性。
      • update 只能用 PATCHPUT 有可能会破坏兼容性。
        • PUT 代表全替换,有时候客户端觉得一个对象的fields 是旧的 F F F,但可能服务端已经是新的 F ′ F^{'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值