mirror of
https://github.com/tenrok/axios.git
synced 2026-06-17 19:21:29 +03:00
13fdbec872
* chore: update changelog and update gitignore * chore: update PR and issue templates * chore: updated docs * chore: update all docs to match * chore: update both files to match * chore: remove un-needed yml * Update docs/fr/pages/advanced/error-handling.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/es/pages/advanced/x-www-form-urlencoded-format.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/pages/advanced/error-handling.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/es/pages/advanced/error-handling.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/pages/advanced/x-www-form-urlencoded-format.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/zh/pages/advanced/x-www-form-urlencoded-format.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/zh/pages/advanced/request-config.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/zh/pages/advanced/request-config.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/pages/advanced/request-config.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/fr/pages/advanced/x-www-form-urlencoded-format.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/zh/pages/advanced/error-handling.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/zh/pages/advanced/request-config.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
# HTTP2 <Badge type="warning" text="Experimental" /> <Badge type="tip" text="v1.13.0+" />
|
|
|
|
El soporte experimental de HTTP/2 fue añadido al adaptador `http` en la versión `1.13.0`. Solo está disponible en entornos Node.js.
|
|
|
|
## Uso básico
|
|
|
|
Usa la opción `httpVersion` para seleccionar la versión del protocolo para una solicitud. Establecerla en `2` habilita HTTP/2.
|
|
|
|
```js
|
|
const { data, headers, status } = await axios.post(
|
|
"https://httpbin.org/post",
|
|
form,
|
|
{
|
|
httpVersion: 2,
|
|
},
|
|
);
|
|
```
|
|
|
|
## `http2Options`
|
|
|
|
Las opciones nativas adicionales para la llamada interna `session.request()` pueden pasarse a través del objeto de configuración `http2Options`. Esto también incluye el parámetro personalizado `sessionTimeout`, que controla cuánto tiempo (en milisegundos) una sesión HTTP/2 inactiva se mantiene viva antes de cerrarse. Su valor predeterminado es `1000ms`.
|
|
|
|
```js
|
|
{
|
|
httpVersion: 2,
|
|
http2Options: {
|
|
rejectUnauthorized: false, // accept self-signed certificates (dev only)
|
|
sessionTimeout: 5000, // keep idle session alive for 5 seconds
|
|
},
|
|
}
|
|
```
|
|
|
|
::: warning
|
|
El soporte de HTTP/2 es actualmente experimental. La API puede cambiar en futuras versiones menores o de parche.
|
|
:::
|
|
|
|
::: warning Las redirecciones no se admiten sobre HTTP/2
|
|
El adaptador HTTP/2 actualmente no sigue redirecciones. Si una solicitud emitida con `httpVersion: 2` recibe una respuesta `3xx`, la redirección no se sigue automáticamente. Maneja estas respuestas manualmente o permanece en HTTP/1.x para endpoints que dependen de redirecciones.
|
|
:::
|
|
|
|
## Ejemplo completo
|
|
|
|
El ejemplo a continuación envía una solicitud POST con `multipart/form-data` sobre HTTP/2 y rastrea tanto el progreso de carga como el de descarga.
|
|
|
|
```js
|
|
const form = new FormData();
|
|
form.append("foo", "123");
|
|
|
|
const { data, headers, status } = await axios.post(
|
|
"https://httpbin.org/post",
|
|
form,
|
|
{
|
|
httpVersion: 2,
|
|
http2Options: {
|
|
// rejectUnauthorized: false,
|
|
// sessionTimeout: 1000
|
|
},
|
|
onUploadProgress(e) {
|
|
console.log("upload progress", e);
|
|
},
|
|
onDownloadProgress(e) {
|
|
console.log("download progress", e);
|
|
},
|
|
responseType: "arraybuffer",
|
|
},
|
|
);
|
|
```
|
|
|
|
## Referencia de configuración
|
|
|
|
| Opción | Tipo | Predeterminado | Descripción |
|
|
|---|---|---|---|
|
|
| `httpVersion` | `number` | `1` | Versión del protocolo HTTP a usar. Establece en `2` para habilitar HTTP/2. |
|
|
| `http2Options.sessionTimeout` | `number` | `1000` | Tiempo en milisegundos antes de que una sesión HTTP/2 inactiva se cierre. |
|
|
|
|
Todas las demás opciones nativas de `session.request()` compatibles con el módulo `http2` integrado de Node.js también pueden pasarse dentro de `http2Options`.
|