【问题标题】:What is the significance of servers property in OpenAPI 3.0?OpenAPI 3.0 中服务器属性的意义是什么?
【发布时间】:2018-11-05 21:05:30
【问题描述】:

OpenAPI 3.0 Specification 中,根OpenAPI Object 具有servers 属性,它是Server Objects 的数组。而Path Item Object 还允许一个可选的servers 属性。

规范中给出的描述并未明确说明servers 有何帮助。

servers 属性的意义是什么?我们是否有任何示例可以解释servers 的用例既作为根 OpenAPI 对象的直接属性又作为路径项的属性?

【问题讨论】:

标签: openapi


【解决方案1】:

servers 为 API 指定一个或多个目标服务器,即 API 调用的基本 URL。端点路径(例如/users/{id})是相对于这些服务器定义的。一些 API 有一个目标服务器;其他人可能会提供多个服务器,例如沙盒与生产或不同地理区域的区域服务器(例如:AWS)。

默认情况下,OpenAPI 定义中的所有操作都使用全局定义的servers,但servers 也可能会被特定路径和操作覆盖。这对于某些操作使用与其余操作不同的服务器的 API 很有用。这样您就可以在单个 API 定义中记录所有操作,而不是将其拆分为多个定义,每个服务器一个。


示例: Dropbox API

  • 大多数端点位于api.dropboxapi.com 域上。
  • 内容上传/下载端点位于content.dropboxapi.com
  • Lo​​ngpoll 端点位于 notify.dropboxapi.com
  • OAuth 端点位于 www.dropbox.com

Dropbox API 定义可能如下所示:

openapi: 3.0.0
info:
  title: Dropbox API
  version: 1.0.0

servers:
  - url: 'https://api.dropboxapi.com/2'

paths:
  # These endpoints are on api.dropboxapi.com (use global `servers`)
  /file_requests/list:
    ...
  /users/get_account:
    ...

  /files/upload:
    # File upload/download uses another target server
    servers:
      - url: 'https://content.dropboxapi.com/2'
    ...

  /files/list_folder/longpoll:
    # Longpolling uses another target server
    servers:
      - url: 'https://notify.dropboxapi.com/2'
    ...


查看API Host and Base Path 指南了解更多详细信息和示例。

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2017-05-30
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多