mirror of
https://github.com/tenrok/axios.git
synced 2026-06-17 19:21:29 +03:00
f39203dcbe
* 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>
151 lines
5.4 KiB
Markdown
151 lines
5.4 KiB
Markdown
# Request aliases
|
|
|
|
axios provides a set of aliases for making HTTP requests. These aliases are shortcuts for making requests using the `request` method. The aliases are designed to be easy to use and to provide a more convenient way to make requests.
|
|
|
|
axios endeavours to follow RFC 7231 and RFC 5789, as closely as possible. The aliases are designed to be consistent with the HTTP methods defined in these RFCs.
|
|
|
|
### `axios`
|
|
|
|
axios can be used to make HTTP request by passing only the config object. The full config object is documented [here](/pages/advanced/request-config)
|
|
|
|
```ts
|
|
axios(url: string | AxiosRequestConfig, config?: AxiosRequestConfig);
|
|
```
|
|
|
|
## Method aliases
|
|
|
|
The following aliases are available for making requests:
|
|
|
|
### `request`
|
|
|
|
The `request` method is the main method that you will use to make HTTP requests. It takes a configuration object as an argument and returns a promise that resolves to the response object. The `request` method is a generic method that can be used to make any type of HTTP request.
|
|
|
|
```ts
|
|
axios.request(config: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `get`
|
|
|
|
The `get` method is used to make a GET request. It takes a URL and an optional configuration object as arguments and returns a promise that resolves to the response object.
|
|
|
|
```ts
|
|
axios.get(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `delete`
|
|
|
|
The `delete` method is used to make a DELETE request. It takes a URL and an optional configuration object as arguments and returns a promise that resolves to the response object.
|
|
|
|
```ts
|
|
axios.delete(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `head`
|
|
|
|
The `head` method is used to make a HEAD request. It takes a URL and an optional configuration object as arguments and returns a promise that resolves to the response object.
|
|
|
|
```ts
|
|
axios.head(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `options`
|
|
|
|
The `options` method is used to make an OPTIONS request. It takes a URL and an optional configuration object as arguments and returns a promise that resolves to the response object.
|
|
|
|
```ts
|
|
axios.options(url: string, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `post`
|
|
|
|
The `post` method is used to make a POST request. It takes a URL, an optional data object, and an optional configuration object as arguments and returns a promise that resolves to the response object.
|
|
|
|
```ts
|
|
axios.post(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `put`
|
|
|
|
The `put` method is used to make a PUT request. It takes a URL, an optional data object, and an optional configuration object as arguments and returns a promise that resolves to the response object.
|
|
|
|
```ts
|
|
axios.put(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `patch`
|
|
|
|
The `patch` method is used to make a PATCH request. It takes a URL, an optional data object, and an optional configuration object as arguments and returns a promise that resolves to the response object.
|
|
|
|
```ts
|
|
axios.patch(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
### `query`
|
|
|
|
The `query` method is used to make a QUERY request, a safe and idempotent method that carries a body. It takes a URL, an optional data object, and an optional configuration object as arguments and returns a promise that resolves to the response object. Use it for read-style operations whose parameters are too complex or sensitive to fit in the URL.
|
|
|
|
```ts
|
|
axios.query(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
```js
|
|
// Send a complex search filter as a request body
|
|
const { data } = await axios.query("/api/search", {
|
|
selector: ["name", "email"],
|
|
filter: { active: true, role: "admin" },
|
|
});
|
|
```
|
|
|
|
::: warning Draft specification
|
|
The QUERY method is defined by an IETF [Internet-Draft](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/) and has not yet been standardized. Semantics and the method name itself may change before final publication, and server, proxy, and CDN support is uneven. Verify your stack accepts `QUERY` end to end before relying on it in production.
|
|
:::
|
|
|
|
## Form data shorthand methods
|
|
|
|
These methods are equivalent to their counterparts above, but preset `Content-Type` to `multipart/form-data`. They are the recommended way to upload files or submit HTML forms.
|
|
|
|
### `postForm`
|
|
|
|
```ts
|
|
axios.postForm(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
```js
|
|
// Upload a file from a browser file input
|
|
await axios.postForm("/api/upload", {
|
|
file: document.querySelector("#fileInput").files[0],
|
|
description: "Profile photo",
|
|
});
|
|
```
|
|
|
|
### `putForm`
|
|
|
|
```ts
|
|
axios.putForm(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
```js
|
|
// Replace a resource with form data
|
|
await axios.putForm("/api/users/1/avatar", {
|
|
avatar: document.querySelector("#avatarInput").files[0],
|
|
});
|
|
```
|
|
|
|
### `patchForm`
|
|
|
|
```ts
|
|
axios.patchForm(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
|
|
```
|
|
|
|
```js
|
|
// Update specific fields using form data
|
|
await axios.patchForm("/api/users/1", {
|
|
displayName: "New Name",
|
|
avatar: document.querySelector("#avatarInput").files[0],
|
|
});
|
|
```
|
|
|
|
::: tip
|
|
`postForm`, `putForm`, and `patchForm` accept all the same data types as their base methods — plain objects, `FormData`, `FileList`, and `HTMLFormElement`. See [File posting](/pages/advanced/file-posting) for more examples.
|
|
:::
|