

# Tutorial: Criar uma API REST importando um exemplo
<a name="api-gateway-create-api-from-example"></a>

Você pode usar o console do Amazon API Gateway para criar e testar uma API REST simples com a integração HTTP de um site PetStore. A definição de API é pré-configurada como um arquivo OpenAPI 2.0. Depois de carregar a definição da API no API Gateway, é possível usar o console do API Gateway para examinar a estrutura básica da API ou simplesmente implantar e testar a API. 

 A API PetStore de exemplo oferece suporte aos métodos a seguir para que um cliente acesse o site de backend HTTP de `http://petstore-demo-endpoint.execute-api.com/petstore/pets`. 

**nota**  
Esse tutorial usa um endpoint HTTP como exemplo. Ao criar suas próprias APIs, recomendamos que você use endpoints HTTPS para as integrações HTTP.
+ `GET /`: para acesso de leitura do recurso raiz da API que não está integrado a qualquer endpoint de backend. O API Gateway responde com uma visão geral do site PetStore. Este é um exemplo do tipo de integração `MOCK`.
+ `GET /pets`: para acesso de leitura ao recurso `/pets` da API que está integrado ao recurso de backend `/pets` de nome idêntico. O backend retorna uma página de animais de estimação disponíveis na PetStore. Este é um exemplo do tipo de integração `HTTP`. O URL do endpoint de integração é `http://petstore-demo-endpoint.execute-api.com/petstore/pets`.
+ `POST /pets`: para acesso de gravação ao recurso `/pets` da API que está integrado ao recurso de backend `/petstore/pets`. Depois de receber uma solicitação correta, o backend adiciona o animal de estimação especificado à PetStore e retorna o resultado para o autor da chamada. A integração também é `HTTP`.
+ `GET /pets/{petId}`: para acesso de leitura a um animal de estimação conforme identificado por um valor `petId` especificado como uma variável de caminho do URL da solicitação recebida. Este método também tem o tipo de integração `HTTP`. O backend retorna o animal de estimação especificado encontrado na PetStore. O URL do endpoint HTTP de backend é `http://petstore-demo-endpoint.execute-api.com/petstore/pets/n`, onde `n` é um número inteiro como o identificador do animal de estimação consultado.

 A API oferece suporte ao acesso de CORS através dos métodos `OPTIONS` do tipo de integração `MOCK`. O API Gateway retorna os cabeçalhos necessários para suporte ao acesso de CORS. 

O procedimento a seguir descreve as etapas para criar e testar uma API a partir de um exemplo usando o console do API Gateway.

**Para importar, criar e testar a API de exemplo**

1. Faça login no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Execute um destes procedimentos:
   + Para criar sua primeira API, em **API REST**, escolha **Criar**.
   + Se você criou uma API antes, escolha **Criar API** e, depois, escolha **Criar** para **API REST**.

1.  Em **Criar API REST**, selecione **API de exemplo** e escolha **Importar** para criar a API de exemplo. 

      
![\[Exemplo de API REST no console do API Gateway.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-create-api-by-importing-example-new-console.png)

    É possível percorrer a definição do OpenAPI para conhecer os detalhes dessa API de exemplo antes de selecionar **Importar**. 

1. No painel de navegação principal, selecione **Recursos**. A API recém-criada é mostrada da seguinte forma:

      
![\[O exemplo de API depois de importá-lo no console do API Gateway.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-create-api-by-importing-example-result-new-console.png)

    O painel **Resources (Recursos)** mostra a estrutura da API criada como uma árvore de nós. Os métodos de API definidos em cada recurso são as extremidades da árvore. Quando um recurso é selecionado, todos os respectivos métodos são listados na tabela **Métodos** à direita. Com cada método, são exibidos o tipo de método, o tipo de integração, o tipo de autorização e o requisito da chave de API. 

1.  Para visualizar os detalhes de um método, modificar sua configuração ou testar a invocação do método, escolha o nome do método na lista de métodos ou na árvore de recursos. Aqui, escolhemos o método `POST /pets` como uma ilustração: 

      
![\[O método POST /pets para o exemplo de API no console do API Gateway.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-create-api-by-importing-example-post-method-execution-new-console.png)

    O painel **Execução de método** resultante apresenta uma visão lógica da estrutura e dos comportamentos do método escolhido (`POST /pets`).

   A **Solicitação de método** e a **Resposta de método** representam a interface da API com o front-end, ao passo que a **Solicitação de integração** e a **Resposta de integração** representam a interface da API com o back-end.

    Um cliente usa a API para acessar um recurso de back-end por meio da **Solicitação de método**. Se necessário, o API Gateway converte a solicitação do cliente no formato aceitável para o back-end em **Solicitação de integração** antes de encaminhá-la ao back-end. A solicitação transformada é conhecida como a solicitação de integração. De maneira semelhante, o back-end retorna a resposta ao API Gateway em **Resposta de integração**. Depois, o API Gateway a roteia para **Method Response (Resposta de método)** antes de enviá-la ao cliente. Novamente, se necessário, o API Gateway poderá mapear os dados da resposta de backend para um formulário esperado pelo cliente. 

    Para o método `POST` em um recurso da API, a carga de solicitação de método poderá ser passada para a solicitação de integração sem modificação, se a carga de solicitação de método estiver no mesmo formato que a carga de solicitação de integração. 

   A solicitação do método `GET /` usa o tipo de integração `MOCK` e não está vinculada a nenhum endpoint de backend real. A **Resposta de integração** correspondente é configurada para gerar uma página HTML estática. Quando o método é chamado, o API Gateway simplesmente aceita a solicitação e retorna imediatamente a resposta de integração configurada para o cliente como **Resposta de método**. Você pode usar a integração fictícia para testar uma API sem exigir um endpoint de backend. Você também pode usá-la para atender a uma resposta local, gerada a partir de um modelo de mapeamento de corpo de resposta. 

   Como desenvolvedor de APIs, você pode controlar os comportamentos das interações de front-end da sua API, configurando a solicitação do método e uma resposta do método. Você controla os comportamentos das interações de backend da sua API configurando a solicitação de integração e a resposta da integração. Isso envolve mapeamentos de dados entre um método e sua integração correspondente. Por enquanto, nos concentraremos em testar a API para fornecer uma experiência de usuário de ponta a ponta. 

1.  Selecione a guia **Testar**. Talvez seja necessário selecionar o botão de seta para a direita para mostrar a guia. 

1.  Por exemplo, para testar o método `POST /pets`, digite a carga útil **\$1"type": "dog","price": 249.99\$1** a seguir no **Corpo da solicitação** e escolha **Testar**.

      
![\[Teste o método POST no console do API Gateway.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-create-api-by-importing-example-post-method-test-new-console.png)

    A entrada especifica os atributos do animal de estimação que queremos adicionar à lista de animais de estimação no site PetStore. 

1. Os resultados são exibidos da seguinte forma:

      
![\[O resultado do teste do método POST no console do API Gateway.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-create-api-by-importing-example-post-method-test-result-new-console.png)

    A entrada **Log** da saída mostra as alterações de estado da solicitação de método para a solicitação de integração e da resposta de integração para a resposta de método. Isso pode ser útil para solucionar problemas com erros de mapeamento que causam a falha da solicitação. Neste exemplo, nenhum mapeamento é aplicado: a carga da solicitação do método é passada por meio de uma solicitação de integração para o backend e, de maneira semelhante, a resposta do backend é passada por meio da resposta da integração para a resposta do método. 

    Para testar a API usando um cliente diferente do recurso test-invoke-request do API Gateway, é necessário primeiro implantar a API em um estágio. 

1.  Para implantar o exemplo de API, selecione **Implantar API**. 

      
![\[Use o botão de implantação para implantar a API, para que os chamadores de API possam invocá-la.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-create-api-by-importing-example-deploy-api-new-console.png)

1. Em **Estágio**, selecione **Novo estágio** e insira **test**.

1. (Opcional) Em **Description (Descrição)**, insira uma descrição.

1. Escolha **Implantar**.

1.  No painel **Estágios** resultante, em **Detalhes do estágio**, **Invocar URL** exibe o URL para invocar a solicitação de método `GET /` da API.   
![\[Após a criação da API REST, o console mostra o URL de chamada da API.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/getting-started-rest-invoke-url.png)

1. Escolha o ícone de cópia para copiar o URL de invocação da API e insira o URL de invocação da sua API em um navegador da web. Uma resposta bem-sucedida retornará o resultado, gerada a partir do modelo de mapeamento na resposta de integração. 

1.  No painel de navegação **Stages** (Estágios), expanda o estágio **test** (teste), selecione **GET** em `/pets/{petId}` e, em seguida, copie o valor de **Invoke URL** (Invocar URL) de `https://api-id.execute-api.region.amazonaws.com/test/pets/{petId}`. `{petId}` representa uma variável de caminho. 

    Cole o valor de **Invoke URL (Invocar URL)** (obtido na etapa anterior) na barra de endereços de um navegador, substituindo `{petId}` por, por exemplo, `1` e pressione Enter para enviar a solicitação. Uma resposta 200 OK será retornada com a seguinte carga JSON: 

   ```
   {
     "id": 1,
     "type": "dog",
     "price": 249.99
   }
   ```

    É possível invocar o método de API conforme mostrado porque seu tipo **Authorization (Autorização)** está definido como `NONE`. Se a autorização do `AWS_IAM` fosse usada, você assinaria a solicitação usando os protocolos [Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html) (SigV4) ou [Signature Version 4a](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html#how-sigv4a-works) (SigV4a). Para obter um exemplo dessa solicitação, consulte [Tutorial: Crie uma API REST com uma integração de não proxy de HTTP](api-gateway-create-api-step-by-step.md). 