

# Tutorial: Crie uma API REST com uma integração de proxy de HTTP
<a name="api-gateway-create-api-as-simple-proxy-for-http"></a>

A integração de proxy HTTP é um mecanismo simples, eficiente e versátil para criar uma API que permite que um aplicativo web acesse vários recursos ou características do endpoint HTTP integrado, por exemplo, todo o site, com a configuração simplificada de um único método da API. Na integração de proxy HTTP, o API Gateway transmite a solicitação de método enviada pelo cliente para o backend. Os dados da solicitação que são transmitidos incluem os cabeçalhos da solicitação, parâmetros da string de consulta, variáveis do caminho do URL e carga. O endpoint HTTP do backend ou o servidor web analisará os dados da solicitação recebida para determinar a resposta que ele retorna. A integração de proxy HTTP faz com que o cliente e o backend interajam diretamente sem qualquer intervenção do API Gateway após a configuração do método da API, exceto problemas conhecidos, como caracteres incompatíveis, que estão listados em [Notas importantes do Amazon API Gateway](api-gateway-known-issues.md).

Com o recurso de proxy totalmente abrangente `{proxy+}`e o verbo global `ANY` para o método HTTP, é possível usar uma integração de proxy HTTP para criar uma API de um único método de API. O método expõe o conjunto completo de recursos HTTP de acesso público e operações de um site. Quando o servidor web de backend abre mais recursos para o acesso público, o cliente pode usar esses novos recursos com a mesma configuração de API. Para habilitar isso, o desenvolvedor do site deve comunicar claramente ao desenvolvedor cliente quais são os novos recursos e quais operações são aplicáveis a cada um deles.



Como uma rápida introdução, o tutorial a seguir demonstra a integração de proxy HTTP. No tutorial, criamos uma API usando o console do API Gateway para integração com o site PetStore por meio de um recurso de proxy genérico `{proxy+}` e criamos o espaço reservado do método HTTP de `ANY`. 

**Topics**
+ [Criar uma API com integração de proxy HTTP usando o console do API Gateway](#api-gateway-create-api-as-simple-proxy-for-http-build)
+ [Testar uma API com a integração de proxy HTTP](#api-gateway-create-api-as-simple-proxy-for-http-test)

## Criar uma API com integração de proxy HTTP usando o console do API Gateway
<a name="api-gateway-create-api-as-simple-proxy-for-http-build"></a>

 O procedimento a seguir descreve as etapas para criar e testar uma API com um recurso de proxy para um backend HTTP usando o console do API Gateway. O backend HTTP é o site `PetStore` (`http://petstore-demo-endpoint.execute-api.com/petstore/pets`) de [Tutorial: Crie uma API REST com uma integração de não proxy de HTTP](api-gateway-create-api-step-by-step.md), no qual capturas de tela são usadas como auxílios visuais para ilustrar os elementos da IU do API Gateway. Se você ainda não sabe usar o console do API Gateway para criar uma API, talvez precise consultar essa seção primeiro. 

**Como criar uma API**

1. Inicie uma sessão no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Se esta for a primeira vez que você usa o API Gateway, você verá uma página com os recursos do serviço. Em **REST API**, escolha **Build** (Criar). Quando o pop-up **Create Example API** (Criar API de exemplo) for exibido, escolha **OK**.

   Se essa não for a primeira vez que você usa o API Gateway, escolha **Create API** (Criar API). Em **REST API**, escolha **Build** (Criar).

1.  Em **API name (Nome da API)**, insira **HTTPProxyAPI**.

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

1. Mantenha **Tipo de endpoint de API** definido como **Regional**.

1. Em **Tipo de endereço IP**, selecione **IPv4**.

1. Selecione **Criar API**.

Nesta etapa, você vai criar um caminho de recurso de proxy de `{proxy+}`. Esse é o espaço reservado de qualquer um dos endpoints de back-end em `http://petstore-demo-endpoint.execute-api.com/`. Por exemplo, ele pode ser `petstore`, `petstore/pets` e `petstore/pets/{petId}`. O API Gateway cria o método `ANY` quando você cria o recurso `{proxy+}` e serve como um espaço reservado para qualquer um dos verbos HTTP compatíveis em runtime.

**Como criar um recurso **/\$1proxy\$1\$1****

1. Selecione a API. 

1. No painel de navegação principal, selecione **Recursos**.

1. Selecione **Criar recurso**.

1. Ative **Recurso proxy**.

1. Mantenha **Caminho do recurso** como `/`.

1. Em **Resource Name (Nome do recurso)**, insira **\$1proxy\$1\$1**.

1. Mantenha **CORS (Compartilhamento de recursos de origem cruzada)** desativado.

1. Selecione **Criar recurso**.  
![\[Crie um recurso filho.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-simple-proxy-create-proxy-resource-new-console.png)

Nesta etapa, você vai integrar o método `ANY` a um endpoint HTTP de back-end usando uma integração de proxy. Na integração de proxy, o API Gateway transmite a solicitação de método enviada pelo cliente ao back-end, sem intervenção do API Gateway.

**Como criar um método `ANY`**

1. Selecione o recurso**/\$1proxy\$1\$1**.

1. Selecione o método **ANY**.

1. Sob o símbolo de aviso, selecione **Editar integração**. Não é possível implantar uma API que tenha um método sem uma integração.

1. Em **Tipo de integração**, selecione **HTTP**.

1. Ative **Integração de proxy HTTP**.

1. Em **Método HTTP**, selecione **ANY**.

1. Em **URL do endpoint**, insira **http://petstore-demo-endpoint.execute-api.com/\$1proxy\$1**.

1. Escolha **Salvar**.

## Testar uma API com a integração de proxy HTTP
<a name="api-gateway-create-api-as-simple-proxy-for-http-test"></a>

 O êxito de determinada solicitação do cliente depende do seguinte: 
+  Se o backend disponibilizou o endpoint de backend correspondente e, se esse for o caso, se as permissões de acesso necessárias foram concedidas. 
+ Se o cliente forneceu a entrada correta.

Por exemplo, a API da PetStore usada aqui não expõe o recurso `/petstore`. Dessa forma, você obtém uma resposta `404 Resource Not Found` contendo a mensagem de erro `Cannot GET /petstore`. 

Além disso, o cliente deve ser capaz de lidar com o formato de saída do backend para analisar o resultado corretamente. O API Gateway não se interpõe para facilitar as interações entre o cliente e o backend. 

**Para testar uma API integrada ao site PetStore usando a integração de proxy HTTP por meio do recurso de proxy**

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

1. Em **Tipo de método**, selecione `GET`.

1. Em **Caminho**, em **proxy**, insira **petstore/pets**.

1. Em **Strings de consulta**, digite **type=fish**.

1. Escolha **Testar**.

     
![\[Use o recurso de teste para testar um método.\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/images/api-gateway-simple-proxy-petstore-call-proxy-resource-new-console.png)

   Como o site de backend oferece suporte para a solicitação `GET /petstore/pets?type=fish`, ele retorna uma resposta bem-sucedida semelhante à seguinte:

   ```
   [
     {
       "id": 1,
       "type": "fish",
       "price": 249.99
     },
     {
       "id": 2,
       "type": "fish",
       "price": 124.99
     },
     {
       "id": 3,
       "type": "fish",
       "price": 0.99
     }
   ]
   ```

   Se você tentar chamar `GET /petstore`, receberá uma resposta `404` com uma mensagem de erro `Cannot GET /petstore`. Isso acontece porque o backend não oferece suporte à operação especificada. Se você chamar `GET /petstore/pets/1`, receberá uma resposta `200 OK` com a carga a seguir, pois a solicitação recebe suporte do site PetStore.

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

Também é possível usar um navegador para testar a API. Implante a API e associe-a a um estágio para criar o URL de invocação da API.

**Para implantar sua API**

1. Escolha **Implantar API**.

1. Em **Estágio**, selecione **Novo estágio**.

1. Em **Stage name (Nome do estágio)**, insira **test**.

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

1. Escolha **Implantar**.

Agora, os clientes podem chamar sua API. 

**Como invocar a API**

1. Inicie uma sessão no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Selecione a API.

1. No painel de navegação principal, selecione **Estágio**.

1. Em **Detalhes do estágio**, escolha o ícone de cópia para copiar o URL de invocação da API.

   Copie o URL de invocação da API em um navegador web. 

   O URL deve ser semelhante a `https://abcdef123.execute-api.us-east-2.amazonaws.com/test/petstore/pets?type=fish`. 

   Seu navegador envia uma solicitação `GET` à API.

1. O resultado deve ser o mesmo que o gerado ao usar **Testar** no console do API Gateway.