Tauri 1.0 的 @tauri-apps/api/http 在 Tauri 2.0 之后换成了单独的插件 @tauri-apps/plugin-http

Tauri 自带的 HTTP 模块 主要是为了在 Tauri 应用中提供一个安全且受控的 HTTP 客户端功能。它有以下几个主要用途:

安全性

{
  "tauri": {
    "allowlist": {
      "http": {
        "all": true,  // 允许所有请求
        "request": true,  // 允许发送请求
        "scope": ["https://api.github.com/*"]  // 限制允许访问的域名
      }
    }
  }
}

使用

  1. 前端调用
  • 可以直接在前端 JavaScript 中使用 Tauri 的 HTTP API:
import { fetch } from '@tauri-apps/api/http';
 
const response = await fetch('https://api.github.com/users', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
});
  1. Rust 后端使用
use tauri::http::{ClientBuilder, ResponseType};
 
async fn make_request() -> Result<(), Box<dyn std::error::Error>> {
    let client = ClientBuilder::new().build()?;
    let response = client
        .get("https://api.github.com")
        .send()
        .await?;
    Ok(())
}

优点

  1. 安全性
  • 内置域名白名单控制
  • 可以通过配置文件限制请求范围
  • 防止恶意请求
  1. 跨平台一致性
  • 在不同平台上保持相同的行为
  • 统一的错误处理机制
  1. 前后端统一
  • 前端和后端可以使用相同的 API 风格
  • 减少学习成本
  1. 与 Tauri 生态集成
  • 与 Tauri 的权限系统完美配合
  • 可以利用 Tauri 的其他功能(如事件系统)

@tauri-apps/plugin-http

Tauri 2.0 中需要使用 Plugin 的形式来使用 http 模块,支持在 javascript 中以及 rust 中使用 HTTP 客户端 | Tauri