跳至主要内容

HTTP

访问用 Rust 编写的 HTTP 客户端。

当 `tauri.conf.json` 中的 build.withGlobalTauri 设置为 true 时,也可以通过 window.__TAURI__.http 访问此包。

必须在 `tauri.conf.json` 中将 API 添加到白名单。

{
"tauri": {
"allowlist": {
"http": {
"all": true, // enable all http APIs
"request": true // enable HTTP request API
}
}
}
}

建议仅将您使用的 API 添加到白名单,以优化包大小和安全性。

安全性

此 API 具有作用域配置,强制您使用 glob 模式限制可以使用哪些 URL 和路径。

例如,此作用域配置仅允许对 `tauri-apps` 组织的 GitHub API 发出 HTTP 请求。

{
"tauri": {
"allowlist": {
"http": {
"scope": ["https://api.github.com/repos/tauri-apps/*"]
}
}
}
}

尝试使用作用域中未配置的 URL 执行任何 API 将导致由于拒绝访问而导致 Promise 拒绝。

枚举

ResponseType

: 1.0.0

枚举成员

名称类型定义位置
3http.ts:74
1http.ts:72
2http.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]));

参数

名称类型描述
bytesIterable<number> | ArrayBuffer | ArrayLike<number>body 字节数组。

返回: Body

准备好用于 POST 和 PUT 请求的 body 对象。

form

Static form(data: FormInput): Body

创建一个新的表单数据 body。表单数据是一个对象,其中每个键都是条目名称,值是字符串或文件对象。

默认情况下,它设置 application/x-www-form-urlencoded Content-Type 头,但是如果启用了 Cargo 功能 http-multipart,则可以将其设置为 multipart/form-data

请注意,必须在 `fs` 白名单作用域中允许文件路径。

示例

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);

参数

名称类型描述
dataFormInputbody 数据。

返回: Body

准备好用于 POST 和 PUT 请求的 body 对象。

json

Static json(data: Record<any, any>): Body

创建一个新的 JSON body。

示例

import { Body } from "@tauri-apps/api/http"
Body.json({
registered: true,
name: 'tauri'
});

参数

名称类型描述
dataRecord<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');

参数

名称类型描述
valuestringbody 字符串。

返回: 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('https://127.0.0.1:3003/users/1');

类型参数

  • T

参数

名称类型
urlstring
options?RequestOptions

返回: Promise<Response<T>>

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('https://127.0.0.1:3003/users', {
timeout: 30,
// the expected response type
responseType: ResponseType.JSON
});

类型参数

  • T

参数

名称类型
urlstring
options?RequestOptions

返回: Promise<Response<T>>

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('https://127.0.0.1:3003/users/1', {
body: Body.json({ email: '[email protected]' })
});

类型参数

  • T

参数

名称类型
urlstring
options?RequestOptions

返回: Promise<Response<T>>

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('https://127.0.0.1:3003/users', {
body: Body.json({
name: 'tauri',
password: 'awesome'
}),
// in this case the server returns a simple string
responseType: ResponseType.Text,
});

类型参数

  • T

参数

名称类型
urlstring
body?Body
options?RequestOptions

返回: Promise<Response<T>>

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('https://127.0.0.1:3003/users/1', {
body: Body.form({
file: {
file: '/home/tauri/avatar.png',
mime: 'image/png',
fileName: 'avatar.png'
}
})
});

类型参数

  • T

参数

名称类型
urlstring
body?Body
options?RequestOptions

返回: Promise<Response<T>>

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: 'https://127.0.0.1:3003/users',
});

类型参数

  • T

参数

名称类型
optionsHttpOptions

返回: Promise<Response<T>>

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| 持续时间

定义于: 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| 持续时间

定义于: http.ts:264

url

url: string

定义于: http.ts:260

类型别名

FetchOptions

FetchOptions: Omit<HttpOptions, "url">

fetch API 的选项。

定义于: http.ts:271

FormInput

FormInput: Record<string, Part> | FormData

定义于: 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('https://127.0.0.1:3003/users/2', {
method: 'GET',
timeout: 30,
});

类型参数

  • T

参数

名称类型
urlstring
options?FetchOptions

返回: Promise<Response<T>>

getClient

getClient(options?: ClientOptions): Promise<Client>

使用指定的选项创建一个新的客户端。

示例

import { getClient } from '@tauri-apps/api/http';
const client = await getClient();

: 1.0.0

参数

名称类型描述
options?ClientOptions客户端配置。

返回: Promise<Client>

解析为客户端实例的 Promise。