http
Access the HTTP client written in Rust.
This package is also accessible with window.__TAURI__.http when build.withGlobalTauri in tauri.conf.json is set to true.
The APIs must be allowlisted on tauri.conf.json:
{
"tauri": {
"allowlist": {
"http": {
"all": true, // enable all http APIs
"request": true // enable HTTP request API
}
}
}
}
It is recommended to allowlist only the APIs you use for optimal bundle size and security.
Security​
This API has a scope configuration that forces you to restrict the URLs and paths that can be accessed using glob patterns.
For instance, this scope configuration only allows making HTTP requests to the GitHub API for the tauri-apps organization:
{
"tauri": {
"allowlist": {
"http": {
"scope": ["https://api.github.com/repos/tauri-apps/*"]
}
}
}
}
Trying to execute any API with a URL not configured on the scope results in a promise rejection due to denied access.
Enumerations​
ResponseType​
Since: 1.0.0
Enumeration Members​
| Name | Type | Defined in |
|---|---|---|
3 | http.ts:74 | |
1 | http.ts:72 | |
2 | http.ts:73 |
Classes​
Body​
The body object to be used on POST and PUT requests.
Since: 1.0.0
Properties​
payload​
payload:
unknown
Defined in: http.ts:95
type​
type:
string
Defined in: http.ts:94
Methods​
bytes​
Staticbytes(bytes:Iterable<number> |ArrayBuffer|ArrayLike<number>):Body
Creates a new byte array body.
Example
import { Body } from "@tauri-apps/api/http"
Body.bytes(new Uint8Array([1, 2, 3]));
Parameters
| Name | Type | Description |
|---|---|---|
bytes | Iterable<number> | ArrayBuffer | ArrayLike<number> | The body byte array. |
Returns: Body
The body object ready to be used on the POST and PUT requests.
form​
Creates a new form data body. The form data is an object where each key is the entry name, and the value is either a string or a file object.
By default it sets the application/x-www-form-urlencoded Content-Type header,
but you can set it to multipart/form-data if the Cargo feature http-multipart is enabled.
Note that a file path must be allowed in the fs allowlist scope.
Example
import { Body } from "@tauri-apps/api/http"
const body = Body.form({
key: 'value',
image: {
file: '/path/to/file', // either a path or an array buffer of the file contents
mime: 'image/jpeg', // optional
fileName: 'image.jpg' // optional
}
});
// alternatively, use a FormData:
const form = new FormData();
form.append('key', 'value');
form.append('image', file, 'image.png');
const formBody = Body.form(form);
Parameters
| Name | Type | Description |
|---|---|---|
data | Record<string, Part> | FormData | The body data. |
Returns: Body
The body object ready to be used on the POST and PUT requests.
json​
Creates a new JSON body.
Example
import { Body } from "@tauri-apps/api/http"
Body.json({
registered: true,
name: 'tauri'
});
Parameters
| Name | Type | Description |
|---|---|---|
data | Record<any, any> | The body JSON object. |
Returns: Body
The body object ready to be used on the POST and PUT requests.
text​
Statictext(value:string):Body
Creates a new UTF-8 string body.
Example
import { Body } from "@tauri-apps/api/http"
Body.text('The body content as a string');
Parameters
| Name | Type | Description |
|---|---|---|
value | string | The body string. |
Returns: Body
The body object ready to be used on the POST and PUT requests.
Client​
Since: 1.0.0
Properties​
id​
id:
number
Defined in: http.ts:303
Methods​
delete​
delete<
T>(url:string,options?:RequestOptions):Promise<Response<T>>
Makes a DELETE request.
Example
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.delete('http://localhost:3003/users/1');
Type parameters
T
Parameters
| Name | Type |
|---|---|
url | string |
options? | RequestOptions |
drop​
drop():
Promise<void>
Drops the client instance.
Example
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
await client.drop();
Returns: Promise<void>
get​
get<
T>(url:string,options?:RequestOptions):Promise<Response<T>>
Makes a GET request.
Example
import { getClient, ResponseType } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.get('http://localhost:3003/users', {
timeout: 30,
// the expected response type
responseType: ResponseType.JSON
});
Type parameters
T
Parameters
| Name | Type |
|---|---|
url | string |
options? | RequestOptions |
patch​
patch<
T>(url:string,options?:RequestOptions):Promise<Response<T>>
Makes a PATCH request.
Example
import { getClient, Body } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.patch('http://localhost:3003/users/1', {
body: Body.json({ email: 'contact@tauri.app' })
});
Type parameters
T
Parameters
| Name | Type |
|---|---|
url | string |
options? | RequestOptions |
post​
post<
T>(url:string,body?:Body,options?:RequestOptions):Promise<Response<T>>
Makes a POST request.
Example
import { getClient, Body, ResponseType } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.post('http://localhost:3003/users', {
body: Body.json({
name: 'tauri',
password: 'awesome'
}),
// in this case the server returns a simple string
responseType: ResponseType.Text,
});
Type parameters
T
Parameters
| Name | Type |
|---|---|
url | string |
body? | Body |
options? | RequestOptions |
put​
put<
T>(url:string,body?:Body,options?:RequestOptions):Promise<Response<T>>
Makes a PUT request.
Example
import { getClient, Body } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.put('http://localhost:3003/users/1', {
body: Body.form({
file: {
file: '/home/tauri/avatar.png',
mime: 'image/png',
fileName: 'avatar.png'
}
})
});
Type parameters
T
Parameters
| Name | Type |
|---|---|
url | string |
body? | Body |
options? | RequestOptions |
request​
request<
T>(options:HttpOptions):Promise<Response<T>>
Makes an HTTP request.
Example
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.request({
method: 'GET',
url: 'http://localhost:3003/users',
});
Type parameters
T
Parameters
| Name | Type |
|---|---|
options | HttpOptions |
Response<T>​
Response object.
Since: 1.0.0
Type parameters
T
Properties​
data​
data:
T
The response data.
Defined in: http.ts:286
headers​
headers:
Record<string,string>
The response headers.
Defined in: http.ts:282
ok​
ok:
boolean
A boolean indicating whether the response was successful (status in the range 200–299) or not.
Defined in: http.ts:280
rawHeaders​
rawHeaders:
Record<string,string[]>
The response raw headers.
Defined in: http.ts:284
status​
status:
number
The response status code.
Defined in: http.ts:278
url​
url:
string
The request URL.
Defined in: http.ts:276
Interfaces​
ClientOptions​
Since: 1.0.0
Properties​
connectTimeout​
OptionalconnectTimeout:number|Duration
Defined in: http.ts:65
maxRedirections​
OptionalmaxRedirections:number
Defines the maximum number of redirects the client should follow. If set to 0, no redirects will be followed.
Defined in: http.ts:64
Duration​
Since: 1.0.0
Properties​
nanos​
nanos:
number
Defined in: http.ts:53
secs​
secs:
number
Defined in: http.ts:52
FilePart<T>​
Since: 1.0.0
Type parameters
T
Properties​
file​
file:
string|T
Defined in: http.ts:81
fileName​
OptionalfileName:string
Defined in: http.ts:83
mime​
Optionalmime:string
Defined in: http.ts:82
HttpOptions​
Options object sent to the backend.
Since: 1.0.0
Properties​
body​
Optionalbody:Body
Defined in: http.ts:250
headers​
Optionalheaders:Record<string,any>
Defined in: http.ts:248
method​
method:
HttpVerb
Defined in: http.ts:246
query​
Optionalquery:Record<string,any>
Defined in: http.ts:249
responseType​
OptionalresponseType:ResponseType
Defined in: http.ts:252
timeout​
Optionaltimeout:number|Duration
Defined in: http.ts:251
url​
url:
string
Defined in: http.ts:247
Type Aliases​
FetchOptions​
FetchOptions:
Omit<HttpOptions,"url">
Options for the fetch API.
Defined in: http.ts:258
HttpVerb​
HttpVerb:
"GET"|"POST"|"PUT"|"DELETE"|"PATCH"|"HEAD"|"OPTIONS"|"CONNECT"|"TRACE"
The request HTTP verb.
Defined in: http.ts:229
Part​
Part:
string|Uint8Array|FilePart<Uint8Array>
Defined in: http.ts:86
RequestOptions​
RequestOptions:
Omit<HttpOptions,"method"|"url">
Request options.
Defined in: http.ts:256
Functions​
fetch​
fetch<
T>(url:string,options?:FetchOptions):Promise<Response<T>>
Perform an HTTP request using the default client.
Example
import { fetch } from '@tauri-apps/api/http';
const response = await fetch('http://localhost:3003/users/2', {
method: 'GET',
timeout: 30,
});
Type parameters
T
Parameters
| Name | Type |
|---|---|
url | string |
options? | FetchOptions |
getClient​
getClient(
options?:ClientOptions):Promise<Client>
Creates a new client using the specified options.
Example
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
Since: 1.0.0
Parameters
| Name | Type | Description |
|---|---|---|
options? | ClientOptions | Client configuration. |
A promise resolving to the client instance.