2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-17 19:21:29 +03:00
Files
axios/docs/pages/advanced/request-method-aliases.md
T
Pierluigi Lenoci f39203dcbe feat: add QUERY HTTP method support (#10802)
* 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>
2026-04-28 14:28:30 +02:00

5.4 KiB

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

axios.query(url: string, data?: D, config?: AxiosRequestConfig<C>): AxiosResponse<R>;
// 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 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

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, and patchForm accept all the same data types as their base methods — plain objects, FormData, FileList, and HTMLFormElement. See File posting for more examples. :::