• API 设计最佳实践(简版)


    Restful API 本文简称API,是一个种面向资源的架构。在Restful中一个API对应一个资源,资源可以是文本,图片,视频等。API特征有如下:

    • 每一个URI代表一种资源
    • 客户端和服务器之间,传递这种资源的某种表现层
    • 客户端通过HTTP动词,对服务器端资源进行操作,实现表现层状态转化

    对于资源的具体操作类型,由HTTP动词表示。
    常用的HTTP动词有下面五个(括号里是对应的SQL命令)另外有两个不常用。

    GET(SELECT):从服务器取出资源(一项或多项)。
    POST(CREATE):在服务器新建一个资源。
    PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
    PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
    DELETE(DELETE):从服务器删除资源。
    HEAD:获取资源的元数据。
    OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
    

    下面是一些例子。

    GET /zoos:列出所有动物园
    POST /zoos:新建一个动物园
    GET /zoos/ID:获取某个指定动物园的信息
    PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
    PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
    DELETE /zoos/ID:删除某个动物园
    GET /zoos/ID/animals:列出某个指定动物园的所有动物
    DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
    

    API 设计黄金法则

    对API格式的决定有疑问,黄金规则可以帮助我们做出正确的决定:

    • 扁平比嵌套好
    • 简单胜于复杂
    • 字符串比数字好
    • 一致性比定制更好

    最佳实践

    URL命名规则

    • URL请求采用小写字母,数字,部分特殊符号组成
    • URL请求中不采用大小写混合的驼峰命名方式,尽量采用全小写单词
    • 如果需要连接多个单词,则采用连接符短横"-"或下划线"_"连接单词,且保持风格统一

    根据返回资源定义URL

    • 获取单数的集合使用单数名词
    • 获取复数的集合使用复数的名词 不推荐:GET /user 推荐:GET /users

    URL以集合开始,以标识符结束

    URL标识一种资源,所以规范的URL是以集合开始以ID结束
    不推荐:GET /category/:categoryId/price 推荐:GET /category/:categoryId

    URL中不添加动作

    不要在URL中使用动词来表达你的意图。相反,使用适当的HTTP方法来描述操作。
    不推荐:POST /updateuser/{userId} GET /getusers
    推荐:PUT /user/{userId}

    不使用表名做URL

    不要只使用表名作为资源名。从长远来看,这种懒惰是有害的,这是因为表名会公开底层体系结构。
    不推荐:product_order 推荐:product-orders

    使用版本号

    建议在 URL 中包含 API 的版本号。
    https://example.com/api/v1/... <-- 第一版 API
    https://example.com/api/v2/... <-- 第二版 API
    好处是:1. API 升级不影响调用方的代码,2. 升级后的 API 可以不向前兼容。

    对非资源URL使用动词

    如果你有一个端点,它只返回一个操作。在这种情况下,你可以使用动词。例如,如果你想要向用户重新发送警报。推荐:POST /alarm/245743/resend

  • 相关阅读:
    Python多进程实现并行化随机森林
    Python多进程队列间传递对象
    Umlet和draw.io 使用心得
    简单认识Adam优化器
    使用BERT进行情感分类预测及代码实例
    【深度学习】深入理解Batch Normalization批标准化
    Vue插件总结
    Vue配置环境识别
    pc端微信上传BUG
    Vue原生订单列表
  • 原文地址:https://www.cnblogs.com/goldsunshine/p/16407144.html
Copyright © 2020-2023  润新知