# Retornar JSON

Retorne um conteúdo JSON diretamente de uma função, sem encaminhar a requisição a uma origem. Use esse padrão para APIs leves e middlewares, como mocks de API, feature flags, endpoints de configuração e health checks, em que a resposta é um dado estruturado e nenhum serviço de backend precisa ser envolvido.

```js
  addEventListener("fetch", event => {
    const data = {
      hello: "world"
    }
  
    const json = JSON.stringify(data, null, 2)
  
    return event.respondWith(
      new Response(json, {
        headers: {
          "content-type": "application/json;charset=UTF-8"
        }
      })
    )
  })
```

## Como funciona

Quando o evento `fetch` é disparado, o handler define um objeto JavaScript simples e o serializa com `JSON.stringify(data, null, 2)`, em que o `2` adiciona indentação para tornar a saída mais legível. Em seguida, cria um novo `Response` com essa string como corpo e define o header `content-type` como `application/json;charset=UTF-8`, o que indica ao cliente que o conteúdo é JSON. Por fim, `event.respondWith()` retorna a resposta, sem nenhuma requisição a uma origem.

O mesmo formato cobre respostas mais completas. Defina um código de status ou adicione headers de CORS e de cache-control no segundo argumento de `Response`, e monte o objeto a partir de dados da requisição, como parâmetros de query string, cookies ou headers, em vez de fixá-los no código.

O objeto também pode ser montado a partir de dados que a função busca. Um handler que chama `fetch()` para cada uma de várias URLs, faz o parse de cada resposta com `response.json()` e aguarda todas juntas com `Promise.all()` retorna um único corpo JSON montado a partir de todas elas. Para um exemplo pronto, consulte [Exemplo: Handlers de eventos assíncronos](/pt-br/documentacao/devtools/runtime/node/events/#handlers-de-eventos-assincronos).

## Recursos relacionados

- [Exemplos em JavaScript](/pt-br/documentacao/plataforma/functions/javascript-exemplos.md): Consulte os demais trechos de código desta coleção.
- [FetchEvent](/pt-br/documentacao/devtools/runtime/api-reference/fetch-event.md): Leia a referência do evento que este handler escuta, incluindo `respondWith()`.
- [Response](/pt-br/documentacao/devtools/runtime/api-reference/response.md): Verifique as opções de status, headers e corpo que o construtor aceita.
- [Como funciona](/pt-br/documentacao/plataforma/functions/como-funciona.md): Veja o que precisa existir antes de uma função ser executada em uma requisição.
- [Limites de Functions](/pt-br/documentacao/plataforma/functions/limites.md): Os tetos dentro dos quais uma única invocação desta função roda, e os que variam conforme o plano.
- [Consulte dados de uso de Functions](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-dados-de-uso-edge-functions-com-graphql.md): Leia de volta o tempo de compute e as invocações que esta função consumiu.
