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.