http
访问用 Rust 编写的 HTTP 客户端。
当 tauri.conf.json
中的 build.withGlobalTauri
设置为 true
时,也可以通过 window.__TAURI__.http
访问此软件包。
API 必须在 tauri.conf.json
中列出:
{
"tauri": {
"allowlist": {
"http": {
"all": true, // 启用所有http API
"request": true // 启用HTTP请求API
}
}
}
}
建议只允许列出您使用的 API,以优化程序包的大小和安全性。
安全
该 API 有一个作用域配置,可强制限制使用 glob 模式访问的 URL 和路径。
例如,此作用域配置只允许向tauri-apps
组织的 GitHub API 发出 HTTP 请求:
{
"tauri": {
"allowlist": {
"http": {
"scope": ["https://api.github.com/repos/tauri-apps/*"]
}
}
}
}
尝试使用未在作用域上配置的 URL 执行任何 API,都会因拒绝访问而导致promise被reject。
枚举
ResponseType
自1.0.0版本起
枚举成员
Name | Type | Defined in |
---|---|---|
3 |
http.ts:74 | |
1 |
http.ts:72 | |
2 |
http.ts:73 |
类别
Body
用于 POST 和 PUT 请求的body对象。
自1.0.0版本起
属性
payload
payload:
unknown
定义在: http.ts:139
type
type:
string
定义在: http.ts:138
方法
bytes
Static
bytes(bytes
:Iterable
<number
> |ArrayBuffer
|ArrayLike
<number
>):Body
创建新的body字节数组。
示例
import { Body } from "@tauri-apps/api/http"
Body.bytes(new Uint8Array([1, 2, 3]));
参数
名称 | 类型 | 描述 |
---|---|---|
bytes |
Iterable <number > | ArrayBuffer | ArrayLike <number > |
body字节数组。 |
返回: Body
准备用于 POST 和 PUT 请求的body对象。
form
创建一个新的表单数据体。表单数据是一个对象,其中每个键都是条目名称,值是字符串或文件对象。
默认情况下,它会设置application/x-www-form-urlencoded
Content-Type 标头,但如果启用了 Cargo 功能 http-multipart
,则可以将其设置为 multipart/form-data
。
请注意,文件路径必须在 fs
allowlist 作用域中被允许。
示例
import { Body } from "@tauri-apps/api/http"
const body = Body.form({
key: 'value',
image: {
file: '/path/to/file', // 路径或文件内容的数组缓冲区
mime: 'image/jpeg', // 可选的
fileName: 'image.jpg' // 可选的
}
});
// 或者,使用 FormData:
const form = new FormData();
form.append('key', 'value');
form.append('image', file, 'image.png');
const formBody = Body.form(form);
参数
名称 | 类型 | 描述 |
---|---|---|
data |
FormInput |
body数据。 |
返回值: Body
准备用于 POST 和 PUT 请求的body对象。
json
创建新的 JSON格式的body。
示例
import { Body } from "@tauri-apps/api/http"
Body.json({
registered: true,
name: 'tauri'
});
参数
名称 | 类型 | 描述 |
---|---|---|
data |
Record <any , any > |
body JSON 对象。 |
返回值: Body
准备用于 POST 和 PUT 请求的body对象。
text
Static
text(value
:string
):Body
创建新的 UTF-8 字符串body。
示例
import { Body } from "@tauri-apps/api/http"
Body.text('The body content as a string');
参数
名称 | 类型 | 描述 |
---|---|---|
value |
string |
body字符串。 |
返回值: Body
准备用于 POST 和 PUT 请求的body对象。
Client
自1.0.0版本起
属性
id
id:
number
定义在: http.ts:316
方法
delete
delete<
T
>(url
:string
,options?
:RequestOptions
):Promise
<Response
<T
>>
发出 DELETE 请求。
示例
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.delete('http://localhost:3003/users/1');
类型参数
T
参数
名称 | 类型 |
---|---|
url |
string |
options? |
RequestOptions |
drop
drop():
Promise
<void
>
删除客户端实例。
示例
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
await client.drop();
返回值: Promise
<void
>
get
get<
T
>(url
:string
,options?
:RequestOptions
):Promise
<Response
<T
>>
发出 GET 请求。
示例
import { getClient, ResponseType } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.get('http://localhost:3003/users', {
timeout: 30,
// 预期响应类型
responseType: ResponseType.JSON
});
类型参数
T
参数
名称 | 类型 |
---|---|
url |
string |
options? |
RequestOptions |
patch
patch<
T
>(url
:string
,options?
:RequestOptions
):Promise
<Response
<T
>>
发起PATCH请求
示例
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' })
});
类型参数
T
参数
名称 | 类型 |
---|---|
url |
string |
options? |
RequestOptions |
post
post<
T
>(url
:string
,body?
:Body
,options?
:RequestOptions
):Promise
<Response
<T
>>
发起POST请求
示例
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,
});
类型参数
T
参数
名称 | 类型 |
---|---|
url |
string |
body? |
Body |
options? |
RequestOptions |
put
put<
T
>(url
:string
,body?
:Body
,options?
:RequestOptions
):Promise
<Response
<T
>>
发起PUT请求
示例
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'
}
})
});
类型参数
T
参数
名称 | 类型 |
---|---|
url |
string |
body? |
Body |
options? |
RequestOptions |
request
request<
T
>(options
:HttpOptions
):Promise
<Response
<T
>>
发起HTTP请求
示例
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
const response = await client.request({
method: 'GET',
url: 'http://localhost:3003/users',
});
类型参数
T
参数
名称 | 类型 |
---|---|
options |
HttpOptions |
Response<T>
请求对象。
自1.0.0版本起
类型参数
T
属性
data
data:
T
响应数据。
定义在: http.ts:299
headers
headers:
Record
<string
,string
>
响应头
定义在: http.ts:295
ok
ok:
boolean
布尔值,表示响应是否成功(状态范围在 200-299 之间)。
定义在: http.ts:293
rawHeaders
rawHeaders:
Record
<string
,string
[]>
原始响应头。
定义在: http.ts:297
status
status:
number
响应状态码
定义在: http.ts:291
url
url:
string
请求url
定义在: http.ts:289
接口
ClientOptions
自1.0.0版本起
属性
connectTimeout
Optional
connectTimeout:number
|Duration
定义在: http.ts:65
maxRedirections
Optional
maxRedirections:number
定义客户端应遵循的最大重定向次数。如果设置为 0,则不会跟踪任何重定向。
定义在: http.ts:64
Duration
自1.0.0版本起
属性
nanos
nanos:
number
定义在: http.ts:53
secs
secs:
number
定义在: http.ts:52
FilePart<T>
自1.0.0版本起
类型参数
T
属性
file
file:
string
|T
定义在: http.ts:81
fileName
Optional
fileName:string
定义在: http.ts:83
mime
Optional
mime:string
定义在: http.ts:82
HttpOptions
发送到后台的选项对象。
自1.0.0版本起
属性
body
Optional
body:Body
定义在: http.ts:263
headers
Optional
headers:Record
<string
,any
>
定义在: http.ts:261
method
method:
HttpVerb
定义在: http.ts:259
query
Optional
query:Record
<string
,any
>
定义在: http.ts:262
responseType
Optional
responseType:ResponseType
定义在: http.ts:265
timeout
Optional
timeout:number
|Duration
定义在: http.ts:264
url
url:
string
定义在: http.ts:260
类型别名
FetchOptions
FetchOptions:
Omit
<HttpOptions
,"url"
>
fetch
API的选项。
定义在: http.ts:271
FormInput
定义在: http.ts:88
HttpVerb
HttpVerb:
"GET"
|"POST"
|"PUT"
|"DELETE"
|"PATCH"
|"HEAD"
|"OPTIONS"
|"CONNECT"
|"TRACE"
请求的HTTP动词
定义在: http.ts:242
Part
Part:
string
|Uint8Array
|FilePart
<Uint8Array
>
定义在: http.ts:86
RequestOptions
RequestOptions:
Omit
<HttpOptions
,"method"
|"url"
>
请求选项
定义在: http.ts:269
方法
fetch
fetch<
T
>(url
:string
,options?
:FetchOptions
):Promise
<Response
<T
>>
使用默认客户端执行 HTTP 请求。
示例
import { fetch } from '@tauri-apps/api/http';
const response = await fetch('http://localhost:3003/users/2', {
method: 'GET',
timeout: 30,
});
类型参数
T
参数
名称 | 类型 |
---|---|
url |
string |
options? |
FetchOptions |
getClient
getClient(
options?
:ClientOptions
):Promise
<Client
>
使用指定选项创建新客户端。
示例
import { getClient } from '@tauri-apps/api/http';
const client = await getClient();
自1.0.0版本起
参数
名称 | 类型 | 描述 |
---|---|---|
options? |
ClientOptions |
客户端配置 |
客户端实例的promise。