# Caso de uso: parâmetros de gatilho API Gateway

### Contexto

Uma empresa de e-commerce precisa garantir que o estoque esteja sempre atualizado, especialmente em períodos de alta demanda, como durante promoções ou datas comemorativas. Cada vez que um produto é vendido, é vital que a baixa no estoque seja processada de forma rápida e precisa, evitando que os clientes fiquem frustrados ao descobrir que um item está esgotado após a compra.

Imagine que, ao realizar a saída de um produto no estoque, é necessário informar dois dados: o ID do produto e a quantidade subtraída do estoque. Além disso, pode ser necessário informar um desconto aplicado na venda.

Nesta documentação vamos explorar como utilizar parâmetros de rota e parâmetros de query do API Gateway para passar essas informações.

### Passo a Passo

Após a contextualização do nosso caso, é hora de configurar o nosso fluxo.

O primeiro passo é adicionar um **Gatilho API Gateway** e configurá-lo.

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2FOa90dclyiSCyox8MQVPj%2F2A815CD4-446F-4109-BA04-61E807110B85.png?alt=media&#x26;token=777e2401-5ef8-4d46-98e5-067f08ecb275" alt=""><figcaption><p>Tela de configuração do Gatilho API Gateway </p></figcaption></figure>

Observe que a rota possui a seguinte formação:

{% code fullWidth="false" %}

```json
                                  /product/:id
```

{% endcode %}

Os dois pontos seguidos de 'ID' indicam que esse é um **parâmetro de rota** (path). O **Skyone Studio** reconhece automaticamente o ID na aba "**Parâmetros**", sendo possível adicionar um valor para testar a operação.

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2FR6EE6kx58lcRa9JWHQgq%2F45C086AE-09DC-4364-8636-F9D3D4E77387.png?alt=media&#x26;token=0c6501de-cf1e-4016-9695-465ba9935c66" alt=""><figcaption></figcaption></figure>

Em seguida, vamos adicionar os **parâmetros de quantidade e desconto**.&#x20;

O envio de valores com vírgula via rota não é permitido. Se houver um valor que inclua vírgula, ele deve ser enviado como um **parâmetro de query**. Por isso, os parâmetros ***quantity*** e ***discount*** serão usados para passar a quantidade e o valor de desconto, respectivamente, porém, na aba "**Query**".<br>

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2Fa5kFwQKqioNRknJeRfmW%2F33D732AE-2100-4EE5-AE3B-E56613CB832A.png?alt=media&#x26;token=12fb53a5-39ab-41d5-b7f9-c3552be45ac9" alt=""><figcaption></figcaption></figure>

Para finalizar a configuração do "**Gatilho API Gateway**", clique em "Salvar".&#x20;

Em seguida, vamos adicionar o módulo do **PostgreSQL**, cuja operação será "**Registra pagamentos**".&#x20;

Por fim, vamos utilizar o módulo ferramental "**Retorno**" para exemplificar o resultado, utilizando a seguinte configuração:<br>

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2F6bBeqtOuPmf2wOFsTtm3%2F5327466C-BE25-49AA-9AE8-36C28E641A57.png?alt=media&#x26;token=ab513e4c-7527-473e-a307-a6a5e4a2785b" alt=""><figcaption></figcaption></figure>

Após a configuração, vamos chamar a API via cliente HTTP. Para isso, vamos abrir o gatilho de API Gateway e copiar a URL fornecida.

Quando olhamos a URL percebemos que não está incluído o valor dos parâmetros. Para isso, precisamos adicioná-los. Observe a tabela abaixo:

<table><thead><tr><th>URL fornecida</th><th>URL alterada</th><th data-hidden></th></tr></thead><tbody><tr><td>https://fake-url/sales/v1/product/:id<br></td><td>https://fake-url/sales/v1/product/23?quantity=2&#x26;discount=4<br></td><td></td></tr></tbody></table>

Ao analisar a estrutura, é possível observar que o parâmetro `:id` foi substituído por "23" e que os parâmetros de query "***quantity***" e "***discount***" foram adicionados.

<figure><img src="https://content.gitbook.com/content/lGHvosl2xodpQaXzCzxY/blobs/8dJUFkR5J16iFM2WeEsl/ED396AA3-5C2A-473E-A540-D9403B27F46E_1_105_c.jpeg" alt=""><figcaption><p>Observe que em amarelo está o parâmetro de rota (:id) e em verde estão os parâmetros de query (quantity e discount)</p></figcaption></figure>

{% hint style="info" %}
É possível executar manualmente e os valores serão preenchidos no gatilho.
{% endhint %}

Após a execução do fluxo, é possível verificar os logs no API Gateway para confirmar se os parâmetros foram recebidos corretamente.

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2FuZAH3iGjVsQhYi9Ih9dG%2FD6A60DD8-E9A1-4C2B-BFBC-7D7366766960.png?alt=media&#x26;token=8685aac0-5b87-4841-9d67-722006a8bba9" alt=""><figcaption></figcaption></figure>

Leia também: [Parâmetros de URL no API Gateway](https://docs.skyone.cloud/skyone-studio/how-to/parametros-de-url-no-api-gateway)
