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
Static
bytes(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
Static
text(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
Optional
connectTimeout:number
|Duration
Defined in: http.ts:65
maxRedirections
Optional
maxRedirections: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
Optional
fileName:string
Defined in: http.ts:83
mime
Optional
mime:string
Defined in: http.ts:82
HttpOptions
Options object sent to the backend.
Since: 1.0.0
Properties
body
Optional
body:Body
Defined in: http.ts:250
headers
Optional
headers:Record
<string
,any
>
Defined in: http.ts:248
method
method:
HttpVerb
Defined in: http.ts:246
query
Optional
query:Record
<string
,any
>
Defined in: http.ts:249
responseType
Optional
responseType:ResponseType
Defined in: http.ts:252
timeout
Optional
timeout: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.