OpenAPI 總覽

Cloud Endpoints 支援使用 支援版本的 OpenAPI 規範說明的 API。

您可以使用任何開放給大眾使用的 REST 架構 (如 DjangoJersey) 來實作 API。

您可以在 JSONYAML 檔案 (稱為「OpenAPI 文件」) 中說明 API。本頁面說明使用 OpenAPI 的優點、示範基本的 OpenAPI 文件,同時也提供能協助您開始使用 OpenAPI 的其他資訊。

支援的 OpenAPI 版本

Cloud Endpoints 支援下列 OpenAPI 版本:

  1. OpenAPI 2.0 (前身為 Swagger)
  2. OpenAPI 3.0.x

如要查看各版本的正式規格,請前往 OpenAPI Initiative

支援修補程式版本

OpenAPI 規格指出,修補程式版本 (例如 3.0.1、3.0.2) 只會修正錯誤或提供說明,不會新增功能。因此,Cloud Endpoints 支援 3.0 的所有修補程式版本。

術語

在 Cloud Endpoints 說明文件中,OpenAPI 3.x 是指所有支援的 OpenAPI 3 版本。

優點

使用 OpenAPI 的主要優點之一是方便製作說明文件。只要有說明 API 的 OpenAPI 文件,就能產生 API 的參考說明文件。

使用 OpenAPI 還有其他優點。例如,您可以:

  • 產生使用數十種語言的用戶端程式庫。
  • 產生伺服器虛設常式。
  • 使用專案來驗證符合程度和產生範例。

OpenAPI 文件的基本結構

OpenAPI 文件說明您 REST API 的介面,並定義以下資訊:

  • API 名稱和說明。
  • API 中的各個端點 (路徑)。
  • 呼叫端驗證方式。

OpenAPI 文件的結構取決於您使用的 OpenAPI 版本。下列範例說明 OpenAPI 2.0 和 OpenAPI 3.x 的結構。

OpenAPI 2.0

如果您是第一次使用 OpenAPI,請瀏覽 Swagger Basic Structure 網站。此網站提供 OpenAPI 文件範本 (也就是 Swagger 規範),並簡要說明檔案中的每個區段。下列範例說明這項基本結構:

swagger: "2.0"
info:
  title: API_ID optional-string
  description: "Get the name of an airport from its three-letter IATA code."
  version: "1.0.0"
host: API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog
schemes:
  - "https"
paths:
  "/airportName":
    get:
      description: "Get the airport name for a given IATA code."
      operationId: "airportName"
      parameters:
        - name: iataCode
          in: query
          required: true
          type: string
      responses:
        200:
          description: "Success."
          schema:
            type: string
        400:
          description: "The IATA code is invalid or missing."

OpenAPI 3.x

如果您是第一次使用 OpenAPI,請參閱 OpenAPI 規範,其中提供 OpenAPI 文件範本,並說明檔案中的每個區段。

以下範例說明這個基本結構:

openapi: 3.0.4
info:
  title: API_ID optional-string
  description: Get the name of an airport from its three-letter IATA code
  version: 1.0.0
servers:
  - url: https://API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog
    x-google-endpoint: {}
x-google-api-management:
  backend:
    BACKEND_NAME
      address: https://BACKEND_URL/airportNameGET
      pathTranslation: APPEND_PATH_TO_ADDRESS
      protocol: "http/1.1"
x-google-backend: BACKEND_NAME
paths:
  /airportName:
    get:
      summary: Get the airport name for a given IATA code
      operationId: airportName
      responses:
        '200':
          description: A successful response
          content:
            application/json:
              schema:
                type: string
      parameters:
        - name: iataCode
          in: query
          required: true
          schema:
            type: string

除了基本架構之外,本教學課程所用的範例程式碼 openapi.yaml 檔案也說明以下事項:

產生 OpenAPI 文件

視您使用的語言而定,您或許能產生一份 OpenAPI 文件。Java 提供同時適用於 JerseySpring 的開放原始碼專案,可利用註解產生 OpenAPI 文件。此外,Java 也提供一款 Maven 外掛程式。Python 使用者可能會對 flask-swagger 專案感興趣,而 swagger-node-express 則是適用於 Node 開發人員。

OpenAPI 社群持續開發新工具,協助撰寫 OpenAPI 文件,還能為某些語言自動產生這類文件。如需完整的工具及整合功能清單,請參閱 Swagger 網站

後續步驟