* feat: add QUERY HTTP method support Add support for the HTTP QUERY method as defined in draft-ietf-httpbis-safe-method-w-body. QUERY is a safe, idempotent method like GET but carries a request body, making it suitable for complex queries that cannot be expressed in a URL. Changes: - Add axios.query(url, data, config) and axios.queryForm() shorthands - Register 'query' in default headers initialization - Include 'query' in header cleanup during request dispatch - Add 'QUERY' to Method type in TypeScript definitions (d.ts and d.cts) - Add query/queryForm signatures to Axios class type definitions - Add 'query' to HeadersDefaults interface - Update unit and module typing tests Closes #5465 Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com> * test: add thorough QUERY method tests Add comprehensive tests for the QUERY HTTP method covering: - Request method correctness (via mock adapter and real HTTP server) - Request body support (QUERY accepts a body like POST/PUT/PATCH) - Custom headers handling - baseURL configuration with instances - Content-Type auto-detection (application/json for objects) - Instance method and defaults merging - Generic request form axios({ method: 'query' }) - queryForm() multipart/form-data support - Integration tests against a real HTTP server verifying the QUERY method string arrives correctly on the wire Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com> * chore: updated docs with all translations * chore: drop formquery method as this is probably not a real use case * chore: remove un-needed file --------- Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com> Co-authored-by: Jay <jasonsaayman@gmail.com>
5.8 KiB
Alias de solicitud
axios proporciona un conjunto de alias para realizar solicitudes HTTP. Estos alias son atajos para hacer solicitudes usando el método request. Están diseñados para ser fáciles de usar y ofrecer una forma más conveniente de hacer solicitudes.
axios se esfuerza por seguir las RFC 7231 y RFC 5789 de la manera más fiel posible. Los alias están diseñados para ser consistentes con los métodos HTTP definidos en dichas RFC.
axios
axios puede usarse para hacer una solicitud HTTP pasando únicamente el objeto de configuración. El objeto de configuración completo está documentado aquí.
axios(url: string | AxiosRequestConfig, config?: AxiosRequestConfig);
Alias de método
Los siguientes alias están disponibles para hacer solicitudes:
request
El método request es el método principal que usarás para hacer solicitudes HTTP. Acepta un objeto de configuración como argumento y devuelve una Promise que se resuelve en el objeto de respuesta. Es un método genérico que puede usarse para cualquier tipo de solicitud HTTP.
axios.request(config: AxiosRequestConfig<C>): AxiosResponse<R>;
get
El método get se usa para hacer una solicitud GET. Acepta una URL y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta.
axios.get(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
delete
El método delete se usa para hacer una solicitud DELETE. Acepta una URL y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta.
axios.delete(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
head
El método head se usa para hacer una solicitud HEAD. Acepta una URL y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta.
axios.head(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
options
El método options se usa para hacer una solicitud OPTIONS. Acepta una URL y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta.
axios.options(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
post
El método post se usa para hacer una solicitud POST. Acepta una URL, un objeto de datos opcional y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta.
axios.post(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
put
El método put se usa para hacer una solicitud PUT. Acepta una URL, un objeto de datos opcional y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta.
axios.put(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
patch
El método patch se usa para hacer una solicitud PATCH. Acepta una URL, un objeto de datos opcional y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta.
axios.patch(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
query
El método query se usa para hacer una solicitud QUERY, un método seguro e idempotente que transporta un cuerpo. Acepta una URL, un objeto de datos opcional y un objeto de configuración opcional como argumentos, y devuelve una Promise que se resuelve en el objeto de respuesta. Úsalo para operaciones de tipo lectura cuyos parámetros sean demasiado complejos o sensibles para ir en la URL.
axios.query(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
// Enviar un filtro de búsqueda complejo como cuerpo de la solicitud
const { data } = await axios.query("/api/search", {
selector: ["name", "email"],
filter: { active: true, role: "admin" },
});
::: warning Especificación en borrador
El método QUERY está definido por un Internet-Draft del IETF y todavía no ha sido estandarizado. La semántica e incluso el propio nombre del método pueden cambiar antes de la publicación final, y el soporte en servidores, proxies y CDN es desigual. Verifica que tu infraestructura acepte QUERY de extremo a extremo antes de usarlo en producción.
:::
Métodos abreviados para datos de formulario
Estos métodos son equivalentes a sus contrapartes anteriores, pero predefinen Content-Type como multipart/form-data. Son la forma recomendada de subir archivos o enviar formularios HTML.
postForm
axios.postForm(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
// Upload a file from a browser file input
await axios.postForm("/api/upload", {
file: document.querySelector("#fileInput").files[0],
description: "Profile photo",
});
putForm
axios.putForm(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
// Replace a resource with form data
await axios.putForm("/api/users/1/avatar", {
avatar: document.querySelector("#avatarInput").files[0],
});
patchForm
axios.patchForm(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
// Update specific fields using form data
await axios.patchForm("/api/users/1", {
displayName: "New Name",
avatar: document.querySelector("#avatarInput").files[0],
});
::: tip
postForm, putForm y patchForm aceptan los mismos tipos de datos que sus métodos base: objetos planos, FormData, FileList y HTMLFormElement. Consulta Publicación de archivos para más ejemplos.
:::