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
枚举成员
名称 | 类型 | 定义位置 |
---|---|---|
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
创建一个新的表单数据 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);
参数
名称 | 类型 | 描述 |
---|---|---|
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('https://127.0.0.1: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('https://127.0.0.1:3003/users', {
timeout: 30,
// the expected response type
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('https://127.0.0.1:3003/users/1', {
body: Body.json({ email: '[email protected]' })
});
类型参数
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('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
参数
名称 | 类型 |
---|---|
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('https://127.0.0.1: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: 'https://127.0.0.1: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
|持续时间
定义于: 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
定义于: 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
参数
名称 | 类型 |
---|---|
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。