# Web APIs

O Azion Runtime oferece às functions um conjunto de Web APIs padrão, e esta página traz o link para a página de referência de cada uma, agrupadas por família.

---

## Conformidade com WinterTC

A Azion participa do [WinterTC (TC55)](https://wintertc.org/), o Comitê Técnico da Ecma International que padroniza uma [API mínima comum](https://min-common-api.proposal.wintertc.org) para runtimes JavaScript server-side com interoperabilidade web. Para o código que executa no Azion Runtime, essa participação significa que:

- O código escrito para o Azion Runtime segue os mesmos padrões de API que os outros runtimes que implementam a API mínima comum.
- A Azion trabalha com o WHATWG, o W3C e outros órgãos de padronização.
- Uma function construída com APIs compatíveis com WinterTC se comporta da mesma forma nas plataformas que implementam essas APIs.

---

## APIs de rede

- [addEventListener](/pt-br/documentacao/devtools/runtime/api-reference/add-eventlistener/) - registra o handler que executa o seu código quando uma requisição chega.
- [fetch](/pt-br/documentacao/devtools/runtime/api-reference/fetch/) - envia uma requisição HTTP a partir de uma function e resolve para uma `Response`.
- [FetchEvent](/pt-br/documentacao/devtools/runtime/api-reference/fetch-event/) - o evento que um listener de `fetch` recebe, com a requisição recebida e `respondWith()`.
- [Request](/pt-br/documentacao/devtools/runtime/api-reference/request/) - a requisição HTTP que uma function recebe, ou uma requisição que você cria para passar a `fetch()`.
- [Response](/pt-br/documentacao/devtools/runtime/api-reference/response/) - a resposta HTTP que uma function retorna, e o objeto para o qual `fetch()` resolve.

---

## APIs de codificação

- [Encoding](/pt-br/documentacao/devtools/runtime/api-reference/encoding/) - converte strings em bytes UTF-8 e de volta com `TextEncoder` e `TextDecoder`.

---

## APIs de Web Streams

- [TransformStream](/pt-br/documentacao/devtools/runtime/api-reference/transform-stream/) - altera os dados à medida que eles passam de um lado gravável para um lado legível.
- [ReadableStream](/pt-br/documentacao/devtools/runtime/api-reference/readable-stream/) - lê um stream de dados em bytes, como o `body` de uma `Response`.
- [WritableStream](/pt-br/documentacao/devtools/runtime/api-reference/writable-stream/) - grava dados em streaming em um destino, com fila e backpressure próprias.
- [ReadableStreamBYOBReader](/pt-br/documentacao/devtools/runtime/api-reference/readable-byob-reader/) - lê um stream de bytes em um buffer que você fornece, sem uma cópia extra.
- [ReadableStreamDefaultReader](/pt-br/documentacao/devtools/runtime/api-reference/readable-default-reader/) - lê os chunks de um `ReadableStream`, como o body de uma resposta de `fetch()`.
- [WritableStreamDefaultWriter](/pt-br/documentacao/devtools/runtime/api-reference/stream-default-writer/) - grava em um `WritableStream` e o bloqueia, para que nenhum outro writer possa usá-lo.

---

## APIs de padrões web

- [URLPattern](/pt-br/documentacao/devtools/runtime/api-reference/url-pattern/) - compara URLs, ou partes de URLs, com um padrão que tem grupos de captura.
- [structuredClone](/pt-br/documentacao/devtools/runtime/api-reference/structured-clone/) - copia objetos complexos com o algoritmo de structured clone.
- [Padrões web](/pt-br/documentacao/devtools/runtime/api-reference/web-standards/) - os objetos padrão do JavaScript que as functions podem usar, como `Math` e `JSON`.

---

## Primitivas do V8

- [WebAssembly](/pt-br/documentacao/devtools/runtime/api-reference/webassembly/) - compila e instancia módulos WebAssembly dentro de uma function.
- [Intl](/pt-br/documentacao/devtools/runtime/api-reference/intl/) - compara strings e formata números, datas e horas por idioma.

---

## APIs de Web Crypto

- [Crypto](/pt-br/documentacao/devtools/runtime/api-reference/crypto/) - gera valores aleatórios criptograficamente fortes e dá acesso a primitivas criptográficas.
- [CryptoKey](/pt-br/documentacao/devtools/runtime/api-reference/crypto-key/) - uma chave criptográfica que um método de `SubtleCrypto` retorna.
- [SubtleCrypto](/pt-br/documentacao/devtools/runtime/api-reference/subtle-crypto/) - funções criptográficas de baixo nível, como assinatura, hash e criptografia.

---

## EventTarget

- [EventTarget](/pt-br/documentacao/devtools/runtime/api-reference/event-target/) - a interface dos objetos que recebem eventos e executam os listeners registrados para eles.

---

## Propriedade EdgeRuntime

> **nota**
>
> Com o `azion dev`, `EdgeRuntime` contém a string `edge-runtime`. Após o deploy, contém `azion`.

O Azion Runtime define a global `EdgeRuntime` como uma string. Uma verificação do tipo dessa global informa ao seu código que ele executa no Azion Runtime. Você pode ler a propriedade de três formas, e cada verificação entra no seu bloco no Azion Runtime:

```javascript
if (typeof EdgeRuntime === 'string') {
  // Your logic here.
}
```

```javascript
if (typeof globalThis.EdgeRuntime === 'string') {
  // Your logic here.
}
```

```javascript
if (typeof self.EdgeRuntime === 'string') {
  // Your logic here.
}
```

---

## Tipos suportados

O Azion Runtime suporta mais tipos e objetos globais do JavaScript do que as Web APIs desta página. Para mais informações, consulte [Globais](/pt-br/documentacao/devtools/runtime/api-reference/azion-runtime-globals/).
