導入API
更新時間 2024-11-12 09:55:43
最近更新時間: 2024-11-12 09:55:43
分享文章
概述
網關支持導入OAS2.0和OAS3.0格式的API定義,幫助用戶快速將現有系統的API接入網關。API網關既支持標準OAS格式的API定義的導入、也支持OAS定義擴展后的API定義導入。
導入標準OAS格式的API定義
導入API的流程主要包括:
- 選擇基本信息(必填)與全局配置(選填).
- 文本填寫或文件導入OAS 2.0或OAS 3.0格式的API定義.
- 進行預檢并根據檢查結果進行調整.
- 執行導入,成功導入后會生成對應的API和分組模型.
對應控制臺操作為:
1, 進入API托管->API管理菜單頁.
2, 在API列表頁點擊導入Swagger按鈕,進入API導入配置頁面.
a. 基本信息,必填
| 參數 | 描述 |
|---|---|
| 導入分組 | 提供分組下拉列表,當API定義版本為OAS2時,用戶填寫的basePath需與所選分組的basePath一致,否則會預檢失敗 |
| 是否覆蓋 | 當選擇覆蓋時,如果遇到請求路徑和http請求沖突時,自動覆蓋原有API;當不選擇覆蓋時,如果遇到請求路徑和http請求沖突時,返回錯誤提示API已經存在 |
| API定義版本 | 可選OAS2.0和OAS3.0。會校驗所填寫的API定義與所選版本是否適配 |
| 后端服務 | 如果在OAS定義中未填寫"x-ctyun-apigateway-backend"擴展字段值,則以該服務作為后端服務;否則優先使用OAS中定義的服務信息 |
b. 全局配置,選填.主要是對入參請求模式,防止重放攻擊進行API全局設置。如果用戶OAS定義中通過擴展字段填寫了該配置信息,則優先使用用戶配置.
c. API定義,確定計劃導入的OAS定義內容,支持文本填入yaml或json格式的API定義內容,也支持上傳本地API定義文件。
3, 單擊預檢按鈕,系統將會對計劃導入的內容進行檢查,檢測出OAS定義中的API定義和模型定義,以及告警和錯誤信息。
4, 預檢過程中沒有錯誤信息和警告信息(或者忽略警告信息之后),可執行導入。單擊導入Swagger按鈕,系統真正開始導入API,導入API需要一定時間,導入過程請勿關閉瀏覽器。
5, 待系統執行完畢后,可查看到API導入結果。
標準OAS2.0格式與API網關的對應
本章節重點介紹OAS 2.0的格式定義與網關的API定義有對應的映射字段,對于沒有對應映射的OAS中的定義,不會影響API的導入。
- Swagger Object:
- BasePath:對應分組的BasePath,導入時需要認證;
- Path Item Object:
- Path:對應API定義中請求部分的請求path;
- Method:對應API定義中請求部分的Method,支持GET,POST,PUT,HEAD,DELETE,PATCH,OPTIONS;
- Operation Object:
- Summary:對應API定義的描述;
- OperationId:對應API定義的API名稱,如果存在擴展字段“x-ctyun-apigateway-api-name”則使用擴展字段中的內容作為API的名稱;
- Schemes:對應API定義中請求部分支持的協議,優先級高于Swagger Object中的定義;
- Parameter Object:
- Name:對應API定義中請求部分的參數名稱;
- In:對應API定義中請求部分的參數位置,支持path,query,head,formdata;
- Description:對應API定義中請求部分的參數描述;
- Required:對應API定義中請求部分的參數是否必填;
- Response Object:
- HTTP Status Code:對應API定義中定義返回結果中錯誤碼定義中的錯誤碼;
- Description:對應API定義中定義返回結果中錯誤碼定義中的描述;
- Schema:對應API定義中定義返回結果中錯誤碼定義中的模型;
- Definitions Object:
該項定義中的對象,在導入的過程中,API網關會將模型創建在分組下,查看模型定義可以通過分組管理列表下,對應分組的操作欄中的模型管理查看。
標準OAS3.0格式與API網關的對應
本章節重點介紹OAS 3.0的格式定義與API網關的API定義有對應的映射字段,對于沒有對應映射的OAS中的定義,不會影響API的導入。
- Path Item Object
- Path:對應API定義中請求部分的請求path;
- Method:對應API定義中請求部分的Method,支持GET,POST,PUT,HEAD,DELETE,PATCH,OPTIONS;
- Operation Object
- Summary:對應API定義的描述;
- OperationId:對應API定義的API名稱,如果存在擴展字段“x-ctyun-apigateway-api-name”則使用擴展字段中的內容作為API的名稱;
- Parameter Object
- Name:對應API定義中請求部分的參數名稱;
- In:對應API定義中請求部分的參數位置,支持path,query,head,formdata;
- Required:對應API定義中請求部分的參數是否必填;
- Schema Object:
- Description:對應API定義中請求部分的參數描述;
- Type:對應API定義中請求部分的參數類型;
- Responses Object
- HTTP Status Code:對應API定義中定義返回結果中錯誤碼定義中的錯誤碼;
- Description:對應API定義中定義返回結果中錯誤碼定義中的描述;
- Content:對應API定義中定義返回結果中錯誤碼定義中的模型;
導入具有API網關擴展字段的OAS格式定義
swagger支持導入具有API網關擴展字段的OAS格式定義
| 擴展字段 | OAS中位置 | 含義 | 類型 | 示例 | 說明 |
|---|---|---|---|---|---|
| x-ctyun-apigateway-api-name | Operation | API名稱 | String | “api-name-test” | 優先于operationId的值作為api名稱 |
| x-ctyun-apigateway-is-anti-replay | Operation | 是否設置防重放攻擊 | Boolean | true | 只支持true和false, 默認false |
| x-ctyun-apigateway-backend | Operation | 后端服務定義 | Object | { "gwServiceCode" :"ea180dd257714a56af39d3408fdf072b","postPath" : "/", "postMethod" : "GET","timeout" : 10000.0} | ·gwServiceCode為已創建的API服務Code,必填;·postPath為后端請求path,不填寫則默認與api中的path一致;·postMethod為后端轉發method,不填寫則與api中的method一致;·timeout為后端服務超時時間,單位是ms,不填寫默認為10000. |
| x-ctyun-apigateway-common-parameters | Operation | 常量參數定義 | Object | [{"paramName" : "spuinstId","paramValue" : "swdeefd","paramLocation" : "query","description" : ""},{"paramName" : "version","paramValue" : "v1","paramLocation" : "header","description" : ""}] | 該字段的值是一個對象列表,可填寫多個常量參數。·paramName為常量參數名稱·paramValue為常量參數值·paramLocation為常量參數位置,只支持query和header兩種,不填寫則默認query·description為描述信息 |
| x-ctyun-apigateway-system-parameters | Operation | 系統參數定義 | Object | [ {"systemParamName" : "routeName","paramName" : "aaa","paramLocation" : "query","description" : ""},{"systemParamName" : "upstreamPort","paramName" : "port","paramLocation" : "header","description" : ""}] | 該字段的值是一個對象列表,可填寫多個系統參數。·systemParamName為系統參數名稱,目前支持的有upstreamId, upstreamPort, routeId, routeName, serviceId, serviceName·paramName為對應的賦值參數名稱·paramLocation為系統參數位置,只支持query和header兩種,不填寫則默認query·description為描述信息 |
| x-ctyun-apigateway-request-argument-mode | Operation | 入參請求模式 | String | “MAPPING_FILTER” | 支持三種入參請求模式:·MAPPING_FILTER:入參映射(支持過濾參數)·MAPPING_PASS:入參映射(透傳未知參數)·PASS:入參透傳不填寫默認為PASS |
| x-ctyun-apigateway-response-messages | Responses | 錯誤碼錯誤信息 | String | “This is errorCodemessage” | |
| x-ctyun-apigateway-parameter-demo | Parameter | 參數定義示例值 | String | ||
| x-ctyun-apigateway-backend-location | Parameter | 后端服務參數映射位置 | String | “path” | 只支持path,query和header,不填寫時默認與api入參定義參數位置一致 |
| x-ctyun-apigateway-backend-name | Parameter | 后端服務參數映射名稱 | String | “abc” | 不填寫時默認與api入參定義參數名稱一致 |
| x-ctyun-apigateway-success-demo | Operation | 返回結果示例 | String | “This is a failed demo” | |
| x-ctyun-apigateway-failed-demo | Operation | 失敗結果示例 | String | “This is a success demo” | |
| x-ctyun-apigateway-request-body-schema | Operation | 請求body引用模型名稱 | String | “people” | 只有當請求方法為post, patch, put, delete,且body數據類型為Json時,該字段才生效,引用的模型名稱應存在模型定義中 |
| x-ctyun-apigateway-request-body-description | Operation | 請求body內容描述 | String | 生效條件同上 | |