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

Static form(data: FormInput): Body

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

默认情况下,它会设置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

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

创建新的 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

返回值: 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,
  // 预期响应类型
  responseType: ResponseType.JSON
});

类型参数

  • T

参数

名称 类型
url string
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: 'contact@tauri.app' })
});

类型参数

  • T

参数

名称 类型
url string
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

参数

名称 类型
url string
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

参数

名称 类型
url string
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

参数

名称 类型
options HttpOptions

返回值: 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

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">

fetchAPI的选项。

定义在: 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

参数

名称 类型
url string
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。