Swagger 路径惯例

Swagger是Web API描述文档的规范。通常采用JSON或者YAML格式,此处我们统一采用JSON格式。

Swagger 文档里的 paths 部分,定义了Web API的路径。

URL的路径部分,采用以下两种形式:

  • /{resources}
    • GET请求 根据参数返回列表。
    • POST请求 根据请求体内的数据创建资源。
  • /{resources}/{id}
    • GET请求 根据ID返回单个资源或404。
    • PUT请求或PATCH请求 根据ID找到单个资源,并将这个资源更新为请求体中的数据。
    • DELETE请求 根据ID找到单个资源,并将这个资源进行销毁。

检索资源列表

根据参数返回列表。

  "/{resources}": {
    "get": {
      "summary":     "...",
      "description": "...",
      "tags":        [ "{resource}" ],
      "parameters":  [
        {
          "name":        "page",
          "in":          "query",
          "description": "...",
          "required":    true,
          "schema":      { "$ref": "#/definitions/{Page}" }
        }
      ],
      "responses": {
        "200": {
          "description": "...",
          "schema":      { "$ref": "#/definitions/Index{Resource}ResponseBody" }
        },
        "default": {
          "description": "出现错误。",
          "schema":      { "$ref": "#/definitions/ErrorResponseBody" }
        }
      }
    }
  }

加载资源详情

根据ID返回单个资源或404。

  "/{resources}/{id}": {
    "get": {
      "summary":     "...",
      "description": "...",
      "tags":        [ "{resource}" ],
      "parameters":  [
        {
          "name":        "id",
          "in":          "path",
          "description": "...",
          "required":    true,
          "schema":      { "$ref": "#/definitions/{ResourceId}" }
        }
      ],
      "responses": {
        "200": {
          "description": "...",
          "schema":      { "$ref": "#/definitions/Load{Resource}ResponseBody" }
        },
        "default": {
          "description": "出现错误。",
          "schema":      { "$ref": "#/definitions/ErrorResponseBody" }
        }
      }
    }
  }

创建资源

根据请求体内的数据创建资源。

  "/{resources}": {
    "post": {
      "summary":     "...",
      "description": "...",
      "tags":        [ "{resource}" ],
      "parameters":  [
        {
          "name":        "request_body",
          "in":          "body",
          "description": "JSON格式的请求体。解释所有的字段。",
          "required":    true,
          "schema":      { "$ref": "#/definitions/Create{Resource}RequestBody" }
        }
      ],
      "responses": {
        "201": {
          "description": "成功的返回。",
          "schema":      { "$ref": "#/definitions/Create{Resource}ResponseBody" }
        },
        "default": {
          "description": "出现错误。",
          "schema":      { "$ref": "#/definitions/ErrorResponseBody" }
        }
      }
    }
  }

更新资源

根据ID找到单个资源,并将这个资源更新为请求体中的数据。

  "/{resources}/{id}": {
    "put": {
      "summary":     "...",
      "description": "...",
      "tags":        [ "{resource}" ],
      "parameters":  [
        {
          "name":        "id",
          "in":          "path",
          "description": "{Resource}的ID。",
          "required":    true,
          "schema":      { "$ref": "#/definitions/{ResourceId}" }
        },
        {
          "name":        "request_body",
          "in":          "body",
          "description": "JSON格式的请求体。解释所有的字段。",
          "required":    true,
          "schema":      { "$ref": "#/definitions/Update{Resource}RequestBody" }
        }
      ],
      "responses": {
        "200": {
          "description": "成功的返回。",
          "schema":      { "$ref": "#/definitions/Update{Resource}ResponseBody" }
        },
        "default": {
          "description": "出现错误。",
          "schema":      { "$ref": "#/definitions/ErrorResponseBody" }
        }
      }
    }
  }

销毁资源

根据ID找到单个资源,并将这个资源进行销毁。

  "/{resources}/{id}": {
    "delete": {
      "summary":     "...",
      "description": "...",
      "tags":        [ "{resource}" ],
      "parameters":  [
        {
          "name":        "id",
          "in":          "path",
          "description": "{Resource}的ID。",
          "required":    true,
          "schema":      { "$ref": "#/definitions/{ResourceId}" }
        },
        {
          "name":        "request_body",
          "in":          "body",
          "description": "JSON格式的请求体。解释所有的字段。",
          "required":    true,
          "schema":      { "$ref": "#/definitions/Destroy{Resource}RequestBody" }
        }
      ],
      "responses": {
        "200": {
          "description": "成功的返回。",
          "schema":      { "$ref": "#/definitions/Destroy{Resource}ResponseBody" }
        },
        "default": {
          "description": "出现错误。",
          "schema":      { "$ref": "#/definitions/ErrorResponseBody" }
        }
      }
    }
  }