# Azion Preview Deployment

O **Azion Preview Deployment** possibilita que você visualize o comportamento de suas functions antes de elas irem para produção. Novas possibilidades são desbloqueadas ao usar o preview, como:

- Testar diferentes fluxos com base no método HTTP fornecido.
- Ver o resultado de uma página HTML.
- Retornar dados em JSON.

---

## Como funciona o Azion Preview Deployment?

A implantação do Azion Preview depende de uma função auxiliar dentro do seu código-fonte. Essa função é chamada `PreviewProvider` e é responsável por depurar e simular uma requisição, retornando o resultado a ser renderizado. A função `PreviewProvider` é representada da seguinte maneira:

```js
    function PreviewProvider<PreviewProvider> (args) {
        var request = new Request("https://www.azion.com/example", {
            method: "GET",
            headers: {
                "Content-Type": "application/json",
                "Authorization": "Bearer my-token"
            },
            redirect: "follow",
        });
        return handleRequest(request);
    }
```

> **Observação**: sem a função `PreviewProvider`, não é possível ter o preview de sua função.

Agora, com sua request simulada em execução, você pode definir comportamentos diferentes para sua função, com base em todas as propriedades disponíveis dentro da variável de request, como:

```js
    async function handleRequest(request){
        switch (request.Method){
            case ‘GET’:
             return new Response(html,{
                headers:{
                    “content-type”:“text/html:charset=UTF-8",
                }
             })
        }
    }
```

Neste trecho de código, é definido que, se uma solicitação `GET` for chamada, ela retornará a variável `HTML`, contendo o arquivo HTML a ser renderizado, e define também seu `content-type` conforme necessário para executar essa ação.

### API Builder

Também é possível criar APIs e ter o resultado com base no método de solicitação. Por exemplo:

- Você pode ter um objeto `JSON` como resposta, se a solicitação for um `POST`, alterando o header do `content-type` e retornando o objeto usando a função `JSON.stringify()`.
- Caso a solicitação seja um `GET` e você deseje retornar uma página HTML, o `tipo de conteúdo` deve ser definido como `text/html:charset=UTF-8`. A resposta será apresentada já renderizada na pré-visualização.

Exemplo:

```js
    async function handleRequest(request){
        switch (request.Method){
            case ‘POST’:
             return new Response(JSON.stringify(objectList),{
                headers:{
                    “content-type”:“application/json”,
                }
             })
            case ‘GET’:
             return new Response(html,{
                headers:{
                    “content-type”:“text/html:charset=UTF-8",
                }
            })
        }
    }
```

A saída é mostrada ao lado do editor de código. Também é possível abri-la em uma guia diferente, clicando no botão **open**.

## Azion Preview Provider e ChatGPT

A integração com ChatGPT ajuda você a aumentar sua produtividade e, juntamente ao Azion Preview Deployment, permite implementações mais analíticas, possibilitando testar e ver novas ideias em tempo real. Acesse [Functions e ChatGPT](/pt-br/documentacao/produtos/applications/functions/runtime-api/ai-integration/).

---

## Implementação

Veja uma implementação da integração entre Functions e o ChatGPT:

| Implementação | Descrição |
| --- | --- |
| [Como criar uma API com Functions e ChatGPT](/pt-br/documentacao/produtos/guias/edge-functions/api-builder/) | Veja como construir uma API e visualizar sua resposta em JSON no Azion Preview Provider, com o auxílio do ChatGPT |




---