Importação de APIs
Você pode importar APIs Swagger e OpenAPI para um grupo de APIs novo ou existente no APIG. Antes de importar APIs, conclua a definição estendida de APIG.
Precauções para importar APIs para um novo grupo
Quando você importa APIs para um novo grupo de APIs, o sistema cria um grupo de APIs.
Esta função é adequada para importar novas APIs para o APIG.
Antes de importar APIs, certifique-se de que os seguintes requisitos sejam atendidos:
- Seu grupo de APIs e cotas de API são suficientes.
- Use a propriedade title em Swagger info e OpenAPI info para especificar um nome de grupo de APIs. O nome de um novo grupo de APIs não pode ser igual ao de um grupo existente.
- Se houver um conflito ao importar APIs, a API anterior será importada com sucesso e a API posterior não poderá ser importada. Por exemplo, se existirem duas APIs com o mesmo nome ou caminho de solicitação na definição de API importada, uma mensagem de sucesso será exibida para a primeira API importada e uma mensagem de falha será exibida para a API a ser importada posteriormente.
- Se a opção Extended Definition Overwrite for selecionada, os itens de definição estendida (controle de acesso e políticas de limitação de solicitações) de uma API importada substituirão os itens de definição estendida existentes com o mesmo nome.
- As APIs importadas não serão publicadas automaticamente em um ambiente. Você pode optar por publicá-las imediatamente ou mais tarde.
Precauções para importar APIs para um grupo existente
Quando você importa APIs para um grupo de APIs especificado, o sistema as adiciona ao grupo de APIs, mantendo as APIs existentes.
Essa função é adequada para importar APIs novas ou modificadas para um grupo de APIs existente.
Antes de importar APIs, certifique-se de que os seguintes requisitos sejam atendidos:
- Sua cota de API é suficiente.
- Se a definição de uma API que estiver importando for a mesma de uma API existente, você poderá substituir a API existente ou mantê-la. Se você deixar a API existente sozinha, a nova API não será importada.
- Se a opção Extended Definition Overwrite for selecionada, os itens de definição estendida (controle de acesso e políticas de limitação de solicitações) de uma API importada substituirão os itens de definição estendida existentes com o mesmo nome.
- As APIs importadas não serão publicadas automaticamente em um ambiente. Você pode optar por publicá-las imediatamente ou mais tarde.
Procedimento
- Vá para o console do APIG.
- Selecione um gateway dedicado na parte superior do painel de navegação.
- Escolha API Management > APIs.
- Clique em Import APIs. Para mais detalhes, consulte Importação de um arquivo de design de API.
Você também pode importar APIs para o APIG consultando os seguintes exemplos:
Importação de uma API de serviço de back-end HTTP
Importe a definição do parâmetro de solicitação de uma API de serviço de back-end HTTP que usa o método GET e é acessada por meio da autenticação do IAM.
Exemplo de Swagger:
swagger: "2.0"
info:
title: "importHttpEndpoint10"
description: "import apis"
version: "1.0"
host: "api.account.com"
paths:
'/http/{userId}':
get:
operationId: "getUser3"
description: "get user by userId"
security:
- apig-auth-iam: []
schemes:
- https
parameters:
- name: "test"
description: "authorization token"
type: "string"
in: "header"
required: true
- name: "userId"
description: "user id"
type: "string"
in: "path"
required: true
responses:
"200":
description: "user information"
x-apigateway-request-type: "public"
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: "NORMAL"
x-apigateway-backend:
type: "HTTP"
parameters:
- name: "userId"
value: "userId"
in: "query"
origin: "REQUEST"
description: "user id"
- name: "X-Invoke-User"
value: "apigateway"
in: "header"
origin: "CONSTANT"
description: "invoke user"
httpEndpoints:
address: "example.com"
scheme: "http"
method: "GET"
path: "/users"
timeout: 30000
securityDefinitions:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
Exemplo de OpenAPI:
openapi: 3.0.0
info:
title: importHttpEndpoint10
version: '1.0'
servers:
- url: >-
http://abc.com
- url: >-
https://abc.com
paths:
'/http/{userId}':
get:
description: get user by userId
operationId: getUser3
parameters:
- description: authorization token
example: ''
in: header
name: test
required: true
schema:
maxLength: 0
maximum: 0
minimum: 0
type: string
x-apigateway-pass-through: always
- description: user id
example: ''
in: path
name: userId
required: true
schema:
maxLength: 0
maximum: 0
minimum: 0
type: string
x-apigateway-pass-through: always
responses:
default-cors:
description: response example
x-apigateway-result-failure-sample: ''
x-apigateway-result-normal-sample: ''
security:
- apig-auth-iam: []
servers:
- url: >-
https://abc.com
x-apigateway-backend:
httpEndpoints:
address: example.com
description: ''
enableClientSsl: false
method: GET
path: /users
retryCount: '-1'
scheme: http
timeout: 30000
parameters:
- description: invoke user
in: HEADER
name: X-Invoke-User
origin: CONSTANT
value: apigateway
- description: user id
in: QUERY
name: userId
origin: REQUEST
value: userId
type: HTTP
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: NORMAL
x-apigateway-request-type: public
x-apigateway-response: default
components:
responses:
default-cors:
description: response example
headers:
Access-Control-Allow-Origin:
schema:
default: '*'
type: string
securitySchemes:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-app-header:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-opt:
appcode-auth-type: header
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
x-apigateway-responses:
default: {}
Importação de uma API de serviço de back-end de HTTP VPC
Importe a definição do parâmetro de solicitação de uma API de serviço de back-end de HTTP VPC que usa o método ANY e é acessada por meio da autenticação da aplicação.
Exemplo de Swagger:
swagger: "2.0"
info:
title: "importHttpVpcEndpoint"
description: "import apis"
version: "1.0"
host: "api.account.com"
paths:
'/http-vpc':
x-apigateway-any-method:
operationId: "userOperation"
description: "user operation resource"
security:
- apig-auth-app: []
schemes:
- https
parameters:
- name: "Authorization"
description: "authorization signature"
type: "string"
in: "header"
required: true
responses:
"default":
description: "endpoint response"
x-apigateway-request-type: "public"
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: "SWA"
x-apigateway-backend:
type: "HTTP-VPC"
parameters:
- name: "X-Invoke-User"
value: "apigateway"
in: "header"
origin: "CONSTANT"
description: "invoke user"
httpVpcEndpoints:
name: "userVpc"
scheme: "http"
method: "GET"
path: "/users"
timeout: 30000
securityDefinitions:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
Exemplo de OpenAPI:
openapi: 3.0.0
info:
description: import apis
title: importHttpVpcEndpoint
version: '1.0'
servers:
- url: >-
http://abc.com
- url: >-
https://abc.com
paths:
/http-vpc:
x-apigateway-any-method:
description: user operation resource
operationId: userOperation
parameters:
- description: authorization signature
example: ''
in: header
name: Authorization
required: true
schema:
maxLength: 0
maximum: 0
minimum: 0
type: string
x-apigateway-pass-through: always
responses:
default-cors:
description: response example
x-apigateway-result-failure-sample: ''
x-apigateway-result-normal-sample: ''
security:
- apig-auth-app: []
servers:
- url: >-
https://abc.com
x-apigateway-backend:
httpVpcEndpoints:
cascade_flag: false
description: ''
enableClientSsl: false
method: GET
name: userVpc
path: /users
retryCount: '-1'
scheme: http
timeout: 30000
parameters:
- description: invoke user
in: HEADER
name: X-Invoke-User
origin: CONSTANT
value: apigateway
type: HTTP-VPC
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: SWA
x-apigateway-request-type: public
components:
responses:
default-cors:
description: response example
headers:
Access-Control-Allow-Origin:
schema:
default: '*'
type: string
securitySchemes:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-app-header:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-opt:
appcode-auth-type: header
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
x-apigateway-responses: {}
Importação de uma API de serviço de back-end de função
Importe a definição do parâmetro de solicitação de uma API de serviço de back-end do FunctionGraph que usa o método GET e é acessada por meio da autenticação do IAM.
Exemplo de Swagger:
swagger: "2.0"
info:
title: "importFunctionEndpoint"
description: "import apis"
version: "1.0"
host: "api.account.com"
paths:
'/function/{name}':
get:
operationId: "invokeFunction"
description: "invoke function by name"
security:
- apig-auth-iam: []
schemes:
- https
parameters:
- name: "test"
description: "authorization token"
type: "string"
in: "header"
required: true
- name: "name"
description: "function name"
type: "string"
in: "path"
required: true
responses:
"200":
description: "function result"
x-apigateway-request-type: "public"
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: "NORMAL"
x-apigateway-backend:
type: "FUNCTION"
parameters:
- name: "functionName"
value: "name"
in: "query"
origin: "REQUEST"
description: "function name"
- name: "X-Invoke-User"
value: "apigateway"
in: "header"
origin: "CONSTANT"
description: "invoke user"
functionEndpoints:
function-urn: "your function urn address"
version: "your function version"
invocation-type: "async"
timeout: 30000
securityDefinitions:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
Exemplo de OpenAPI:
openapi: 3.0.0
info:
description: import apis
title: importHttpEndpoint
version: '1.0'
servers:
- url: >-
http://api.account.com
- url: >-
https://api.account.com
paths:
/function/{name}:
get:
description: invoke function by name
operationId: invokeFunction
parameters:
- description: function name
in: path
name: name
required: true
schema:
maxLength: 0
maximum: 0
minimum: 0
type: string
x-apigateway-pass-through: always
example: ''
- description: authorization token
in: header
name: test
required: true
schema:
maxLength: 0
maximum: 0
minimum: 0
type: string
x-apigateway-pass-through: always
example: ''
responses:
default-cors:
description: response example
x-apigateway-result-failure-sample: ''
x-apigateway-result-normal-sample: ''
security:
- apig-auth-iam: []
servers:
- url: >-
https://api.account.com
x-apigateway-backend:
functionEndpoints:
alias-urn: ''
description: ''
function-urn: "your function urn address"
invocation-type: async
network-type: V1
timeout: 30000
version: "your function version"
parameters:
- description: invoke user
in: HEADER
name: X-Invoke-User
origin: CONSTANT
value: apigateway
- description: function name
in: QUERY
name: functionName
origin: REQUEST
value: name
type: FUNCTION
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: NORMAL
x-apigateway-request-type: public
x-apigateway-response: default
components:
responses:
default-cors:
description: response example
headers:
Access-Control-Allow-Origin:
schema:
default: '*'
type: string
securitySchemes:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
x-apigateway-responses:
default: {}
Importação de uma API de serviço de back-end Mock
Importe a definição de uma API de serviço de back-end Mock que usa o método GET e é acessada sem autenticação.
Exemplo de Swagger:
swagger: "2.0"
info:
title: "importMockEndpoint"
description: "import apis"
version: "1.0"
host: "api.account.com"
paths:
'/mock':
get:
operationId: "mock"
description: "mock test"
schemes:
- http
responses:
"200":
description: "mock result"
x-apigateway-request-type: "private"
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: "NORMAL"
x-apigateway-backend:
type: "MOCK"
mockEndpoints:
result-content: "{\"message\": \"mocked\"}"
securityDefinitions:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
Exemplo de OpenAPI:
openapi: 3.0.0
info:
description: import apis
title: importHttpVpcEndpoint
version: '1.0'
servers:
- url: >-
http://abc.com
- url: >-
https://abc.com
paths:
/mock:
get:
description: mock test
operationId: mock
responses:
default-cors:
description: response example
x-apigateway-result-failure-sample: ''
x-apigateway-result-normal-sample: ''
servers:
- url: >-
http://abc.com
x-apigateway-backend:
mockEndpoints:
description: ''
result-content: '{"message": "mocked"}'
type: MOCK
x-apigateway-cors: true
x-apigateway-is-send-fg-body-base64: true
x-apigateway-match-mode: NORMAL
x-apigateway-request-type: private
x-apigateway-response: default
components:
responses:
default-cors:
description: response example
headers:
Access-Control-Allow-Origin:
schema:
default: '*'
type: string
securitySchemes:
apig-auth-app:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-type: AppSigv1
apig-auth-app-header:
in: header
name: Authorization
type: apiKey
x-apigateway-auth-opt:
appcode-auth-type: header
x-apigateway-auth-type: AppSigv1
apig-auth-iam:
in: header
name: unused
type: apiKey
x-apigateway-auth-type: IAM
x-apigateway-responses:
default: {}
Operações de acompanhamento
Publique as APIs importadas em um ambiente para que elas possam ser chamadas pelos usuários.