跳至主要内容

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 请求的主体对象。

: 1.0.0

属性

payload

payload: unknown

定义于: http.ts:139

type

type: string

定义于: http.ts:138

方法

bytes

静态 bytes(bytes: Iterable<number> | ArrayBuffer | ArrayLike<number>): Body

创建一个新的字节数组主体。

示例

import { Body } from "@tauri-apps/api/http"
Body.bytes(new Uint8Array([1, 2, 3]));

参数

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

返回:Body

正文对象,可用于 POST 和 PUT 请求。

form

Static form(data: FormInput): 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);

参数

名称类型描述
dataFormInput正文数据。

返回:Body

正文对象,可用于 POST 和 PUT 请求。

json

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

创建一个新的 JSON 正文。

示例

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

参数

名称类型描述
dataRecord<any, any>正文 JSON 对象。

返回:Body

正文对象,可用于 POST 和 PUT 请求。

text

Static text(value: string): Body

创建一个新的 UTF-8 字符串正文。

示例

import { Body } from "@tauri-apps/api/http"
Body.text('The body content as a string');

参数

名称类型描述
valuestring正文字符串。

返回:Body

正文对象,可用于 POST 和 PUT 请求。

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

参数

名称类型
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('http://localhost: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('http://localhost: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('http://localhost: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('http://localhost: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: 'http://localhost: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 | 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

可选 mime: string

定义于: http.ts:82

HttpOptions

发送到后端的选项对象。

: 1.0.0

属性

body

可选 body: Body

定义于: http.ts:263

headers

可选 headers: Record<string, any>

定义于: http.ts:261

method

method: HttpVerb

定义于: http.ts:259

query

可选 query: Record<string, any>

定义于: http.ts:262

responseType

可选 responseType: ResponseType

定义于: http.ts:265

timeout

可选 timeout: number | Duration

定义于: 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('http://localhost: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。