As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar uma API otimizada para bordas usando o AWS SDK para Node.js
Como ilustração, usamos o AWS SDK for Node.js para descrever como você pode usar um AWS SDK para criar uma API do API Gateway. Para obter mais informações sobre como usar um AWS SDK, incluindo como configurar o ambiente de desenvolvimento, consulte AWS SDKs
A configuração de uma API usando o AWS SDK para Node.js envolve chamar as putIntegrationResponse
funções createResource
ou createRestApi
getResources
putMethod
putMethodResponse
,putIntegration
,, e.
Os procedimentos a seguir orientam você pelas etapas essenciais para usar esses comandos do SDK para configurar uma PetStore API simples que ofereça suporte aos GET /pets/{petId}
métodos GET /pets
e.
Para configurar uma PetStore API simples usando o AWS SDK para Node.js
-
Instancie o SDK:
var AWS = require('aws-sdk'); AWS.config.region = 'us-west-2'; var apig = new AWS.APIGateway({apiVersion: '2015/07/09'});
-
Chame a função
createRestApi
para configurar a entidadeRestApi
.apig.createRestApi({ name: "Simple PetStore (node.js SDK)", binaryMediaTypes: [ '*' ], description: "Demo API created using the AWS SDK for node.js", version: "0.00.001" }, function(err, data){ if (!err) { console.log(data); } else { console.log('Create API failed:\n', err); } });
A função retorna uma saída semelhante ao seguinte resultado:
{ id: 'iuo308uaq7', name: 'PetStore (node.js SDK)', description: 'Demo API created using the AWS SDK for node.js', createdDate: 2017-09-05T19:32:35.000Z, version: '0.00.001', binaryMediaTypes: [ '*' ] }
O identificador da API resultante é
iuo308uaq7
. Você precisa fornecer isso para continuar a configuração da API. -
Chame a função
getResources
para recuperar o identificador de recurso raiz daRestApi
.apig.getResources({ restApiId: 'iuo308uaq7' }, function(err, data){ if (!err) { console.log(data); } else { console.log('Get the root resource failed:\n', err); } })
Essa função retorna uma saída semelhante ao seguinte resultado:
{ "items": [ { "path": "/", "id": "s4fb0trnk0" } ] }
O identificador de recurso raiz é
s4fb0trnk0
. Esse é o ponto de partida para construir a árvore de recursos de API, o que você verá em seguida. -
Chame a função
createResource
para configurar o recurso/pets
para a API, especificando o identificador de recurso raiz (s4fb0trnk0
) na propriedadeparentId
.apig.createResource({ restApiId: 'iuo308uaq7', parentId: 's4fb0trnk0', pathPart: 'pets' }, function(err, data){ if (!err) { console.log(data); } else { console.log("The '/pets' resource setup failed:\n", err); } })
O resultado bem-sucedido é o seguinte:
{ "path": "/pets", "pathPart": "pets", "id": "8sxa2j", "parentId": "s4fb0trnk0'" }
Para configurar o recurso
/pets/{petId}
, chame a seguinte funçãocreateResource
, especificando o recurso/pets
recém-criado (8sxa2j
) na propriedadeparentId
.apig.createResource({ restApiId: 'iuo308uaq7', parentId: '8sxa2j', pathPart: '{petId}' }, function(err, data){ if (!err) { console.log(data); } else { console.log("The '/pets/{petId}' resource setup failed:\n", err); } })
O resultado bem-sucedido retorna o valor de
id
recém-criado:{ "path": "/pets/{petId}", "pathPart": "{petId}", "id": "au5df2", "parentId": "8sxa2j" }
Durante esse procedimento, consulte o recurso
/pets
, especificando seu ID de recurso de8sxa2j
e o recurso/pets/{petId}
especificando seu ID de recurso deau5df2
. -
Chame a função
putMethod
para adicionar o método HTTPGET
no recurso/pets
(8sxa2j
). Isso configura oGET /pets
Method
com acesso aberto.apig.putMethod({ restApiId: 'iuo308uaq7', resourceId: '8sxa2j', httpMethod: 'GET', authorizationType: 'NONE' }, function(err, data){ if (!err) { console.log(data); } else { console.log("The 'GET /pets' method setup failed:\n", err); } })
Essa função retorna uma saída semelhante ao seguinte resultado:
{ "apiKeyRequired": false, "httpMethod": "GET", "authorizationType": "NONE" }
Para adicionar o método HTTP
GET
ao recurso/pets/{petId}
(au5df2
), que configura o método de API deGET /pets/{petId}
com acesso aberto, chame a funçãoputMethod
da seguinte forma.apig.putMethod({ restApiId: 'iuo308uaq7', resourceId: 'au5df2', httpMethod: 'GET', authorizationType: 'NONE', requestParameters: { "method.request.path.petId" : true } }, function(err, data){ if (!err) { console.log(data); } else { console.log("The 'GET /pets/{petId}' method setup failed:\n", err); } })
Essa função retorna uma saída semelhante ao seguinte resultado:
{ "apiKeyRequired": false, "httpMethod": "GET", "authorizationType": "NONE", "requestParameters": { "method.request.path.petId": true } }
Você precisa definir a propriedade
requestParameters
como mostrado no exemplo anterior para mapear e passar o valorpetId
fornecido pelo cliente para o backend. -
Chame a função
putMethodResponse
para configurar uma resposta para o métodoGET /pets
.apig.putMethodResponse({ restApiId: 'iuo308uaq7', resourceId: "8sxa2j", httpMethod: 'GET', statusCode: '200' }, function(err, data){ if (!err) { console.log(data); } else { console.log("Set up the 200 OK response for the 'GET /pets' method failed:\n", err); } })
Essa função retorna uma saída semelhante ao seguinte resultado:
{ "statusCode": "200" }
Para definir a resposta 200 OK do método
GET /pets/{petId}
, chame a funçãoputMethodResponse
especificando o identificador de recurso/pets/{petId}
(au5df2
) na propriedaderesourceId
.apig.putMethodResponse({ restApiId: 'iuo308uaq7', resourceId: "au5df2", httpMethod: 'GET', statusCode: '200' }, function(err, data){ if (!err) { console.log(data); } else { console.log("Set up the 200 OK response for the 'GET /pets/{petId}' method failed:\n", err); } })
-
Chame a função
putIntegration
para configurar aIntegration
com um endpoint HTTP especificado para o métodoGET /pets
, fornecendo o identificador de recurso/pets
(8sxa2j
) na propriedadeparentId
.apig.putIntegration({ restApiId: 'iuo308uaq7', resourceId: '8sxa2j', httpMethod: 'GET', type: 'HTTP', integrationHttpMethod: 'GET', uri: 'http://perstore-demo-endpoint.execute-api.com/pets' }, function(err, data){ if (!err) { console.log(data); } else { console.log("Set up the integration of the 'GET /' method of the API failed:\n", err); } })
Essa função retorna uma saída semelhante à seguinte:
{ "httpMethod": "GET", "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "type": "HTTP", "uri": "http://petstore-demo-endpoint.execute-api.com/petstore/pets", "cacheNamespace": "8sxa2j" }
Para configurar a integração do método
GET /pets/{petId}
com o endpoint HTTP dehttp://perstore-demo-endpoint.execute-api.com/pets/{id}
do backend, chame a seguinte funçãoputIntegration
, fornecendo o identificador de recurso/pets/{petId}
da API (au5df2
) na propriedadeparentId
.apig.putIntegration({ restApiId: 'iuo308uaq7', resourceId: 'au5df2', httpMethod: 'GET', type: 'HTTP', integrationHttpMethod: 'GET', uri: 'http://perstore-demo-endpoint.execute-api.com/pets/{id}', requestParameters: { "integration.request.path.id": "method.request.path.petId" } }, function(err, data){ if (!err) { console.log(data); } else { console.log("The 'GET /pets/{petId}' method integration setup failed:\n", err); } })
Essa função retorna uma saída bem-sucedida semelhante ao seguinte:
{ "httpMethod": "GET", "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "type": "HTTP", "uri": "http://petstore-demo-endpoint.execute-api.com/petstore/pets/{id}", "cacheNamespace": "au5df2", "requestParameters": { "integration.request.path.id": "method.request.path.petId" } }
-
Chame a função
putIntegrationResponse
para configurar a resposta de integração 200 OK para o métodoGET /pets
especificando o identificador de recurso/pets
da API (8sxa2j
) na propriedaderesourceId
.apig.putIntegrationResponse({ restApiId: 'iuo308uaq7', resourceId: '8sxa2j', httpMethod: 'GET', statusCode: '200', selectionPattern: '' }, function(err, data){ if (!err) { console.log(data); } else console.log("The 'GET /pets' method integration response setup failed:\n", err); })
Essa função retornará uma saída semelhante ao seguinte resultado:
{ "selectionPattern": "", "statusCode": "200" }
Para configurar a resposta de integração 200 OK do método
GET /pets/{petId}
, chame a funçãoputIntegrationResponse
especificando o identificador de recurso/pets/{petId}
da API (au5df2
) na propriedaderesourceId
.apig.putIntegrationResponse({ restApiId: 'iuo308uaq7', resourceId: 'au5df2', httpMethod: 'GET', statusCode: '200', selectionPattern: '' }, function(err, data){ if (!err) { console.log(data); } else console.log("The 'GET /pets/{petId}' method integration response setup failed:\n", err); })
-
Como boa prática, experimente chamar a API antes de implantá-la. Para tentar invocar o método
GET /pets
, chame otestInvokeMethod
especificando o identificador de recurso/pets
(8sxa2j
) na propriedaderesourceId
:apig.testInvokeMethod({ restApiId: 'iuo308uaq7', resourceId: '8sxa2j', httpMethod: "GET", pathWithQueryString: '/' }, function(err, data){ if (!err) { console.log(data) } else { console.log('Test-invoke-method on 'GET /pets' failed:\n', err); } })
Para tentar invocar o método
GET /pets/{petId}
, chame otestInvokeMethod
especificando o identificador de recurso/pets/{petId}
(au5df2
) na propriedaderesourceId
:apig.testInvokeMethod({ restApiId: 'iuo308uaq7', resourceId: 'au5df2', httpMethod: "GET", pathWithQueryString: '/' }, function(err, data){ if (!err) { console.log(data) } else { console.log('Test-invoke-method on 'GET /pets/{petId}' failed:\n', err); } })
-
Por fim, você pode implantar a API para seus clientes chamarem.
apig.createDeployment({ restApiId: 'iuo308uaq7', stageName: 'test', stageDescription: 'test deployment', description: 'API deployment' }, function(err, data){ if (err) { console.log('Deploying API failed:\n', err); } else { console.log("Deploying API succeeded\n", data); } })