# Exemplos em JavaScript

Copie qualquer um destes trechos de JavaScript para uma função como ponto de partida para o seu próprio código. Os exemplos cobrem os padrões para os quais as funções são mais usadas: retornar uma resposta ou um conteúdo JSON, redirecionar tráfego, ler cookies, executar um teste A/B e negar uma requisição por país. Eles são agrupados por onde a função é executada: Applications, para funções que tratam o evento `fetch` em uma aplicação, e Firewall, para funções que tratam o evento `firewall` em um firewall.

A maior parte dos handlers desta coleção é escrita no padrão Service Worker, que registra o handler com `addEventListener`. Código novo usa ES Modules, e [Processe o corpo de uma requisição](/pt-br/documentacao/plataforma/functions/process-request-body/) está escrito assim: consulte [Boas práticas](/pt-br/documentacao/plataforma/functions/boas-praticas/) para o padrão atual e [Migre padrões de handler em Functions](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/functions-e-runtime/migrar-padroes-de-handler/) para o antes e depois de cada handler.

---

## Applications

- [Teste A/B](/pt-br/documentacao/plataforma/functions/ab-testing.md): Divida o tráfego entre duas respostas em uma função, sorteando o grupo do visitante e registrando a escolha em um cookie.
- [Extrair o valor de um cookie](/pt-br/documentacao/plataforma/functions/cookie-value.md): Leia um cookie pelo nome no cabeçalho da requisição em uma função e use o valor para moldar a resposta retornada.
- [Hello world](/pt-br/documentacao/plataforma/functions/hello-world.md): Retorne uma string fixa de uma função, sem contatar uma origem, e confirme que a função está publicada e atendendo ao tráfego.
- [Processe o corpo de uma requisição](/pt-br/documentacao/plataforma/functions/process-request-body.md): Leia o corpo que o cliente envia, escolhendo pelo header Content-Type como fazer o parse de JSON, form data, texto, binário e stream.
- [Redirecionar todas as requisições para uma URL](/pt-br/documentacao/plataforma/functions/redirect-requests.md): Envie todas as requisições recebidas para uma única URL de destino com um redirecionamento 301 retornado por uma função, antes que cheguem à origem.
- [Responder com outro site](/pt-br/documentacao/plataforma/functions/respond-site.md): Responda a uma requisição com conteúdo buscado de outro site, repassando a resposta upstream enquanto o navegador mantém a URL original.
- [APIs REST](/pt-br/documentacao/plataforma/functions/rest-apis.md): Chame uma API REST a partir de uma função com fetch, usando os métodos GET, DELETE, POST, PUT e PATCH com dados JSON.
- [Retornar HTML](/pt-br/documentacao/plataforma/functions/return-html.md): Construa uma página HTML dentro de uma função e retorne-a com o header content-type correto, sem renderizá-la em um servidor de origem.
- [Retornar JSON](/pt-br/documentacao/plataforma/functions/return-json.md): Serialize um objeto e retorne-o como uma resposta JSON com o header content-type correto, para APIs leves e middlewares.
- [Utilizar args](/pt-br/documentacao/plataforma/functions/utilizar-args.md): Passe Args em JSON para uma função a partir de sua instância e leia-os em tempo de execução para mudar o comportamento sem editar o código.

---

## Firewall

- [Adicionar um response header](/pt-br/documentacao/plataforma/functions/adding-response-header.md): Adicione um response header com base no país do visitante, com uma função que é executada em um firewall e lê metadados de GeoIP.
- [Negar uma requisição por país](/pt-br/documentacao/plataforma/functions/deny-request.md): Bloqueie as requisições de um país escolhido antes que cheguem à sua aplicação, com uma função que é executada em um firewall.
- [Functions em um firewall](/pt-br/documentacao/plataforma/functions/general-firewall-example.md): Negue, descarte, modifique ou responda a uma requisição em um único handler de firewall, com as ações de evento disponíveis para uma função.

---

## Recursos relacionados

- [Primeiros passos](/pt-br/documentacao/plataforma/functions/primeiros-passos.md): Leve um destes trechos do editor até uma URI que o responda.
- [Handlers](/pt-br/documentacao/devtools/runtime/api-reference/handlers.md): Leia a referência dos handlers `fetch` e `firewall` e os parâmetros que cada um recebe.
- [Boas práticas](/pt-br/documentacao/plataforma/functions/boas-praticas.md): Dimensione, configure e instrumente uma função para que ela permaneça dentro dos limites de cada invocação.
- [Limites de Functions](/pt-br/documentacao/plataforma/functions/limites.md): Consulte os limites default de funções e instâncias de função, incluindo tamanho de código, memória e tempo de execução.
- [Solução de problemas](/pt-br/documentacao/plataforma/functions/solucao-de-problemas.md): Encontre a causa quando uma função nunca roda, para antes de responder ou não gera saída de log.
