tauri-plugin-axum 0.6.0

A Tauri plugin that allows calling Axum Router endpoints directly.
Documentation

tauri-plugin-axum

Crates.io Version NPM Version

Feature

Install

cargo add tauri-plugin-axum
pnpm i @mcitem/tauri-plugin-axum
// src-tauri/capabilities/default.json
{
  // ..
  "permissions": ["axum:default"]
  // ..
}

Example

// https://docs.rs/tauri/2.8.2/tauri/plugin/struct.Builder.html#known-limitations
// Known limitations
// URI scheme protocols are registered when the webview is created.
// Due to this limitation, if the plugin is registered after a webview has been created,
// protocol won’t be available.
// macOS, iOS and Linux: axum://localhost/<path>
// Windows and Android: http://axum.localhost/<path> by default
// if use protocol, register it before setup hook
tauri::Builder::default().plugin(tauri_plugin_axum::init(Router::new()))

window.fetch("http://axum.localhost/")
#[derive(Serialize, Deserialize)]
struct Greet {
    axum: String,
    tauri: String,
}

async fn post_handle(Json(j): Json<Greet>) -> Json<Greet> {
    Json(Greet {
        axum: format!("axum, {}!", j.axum),
        tauri: format!("tauri, {}!", j.tauri),
    })
}

// async init router
tauri::Builder::default()
    .setup(|app| {
        let path = app.path().app_config_dir()?;
        app.handle().plugin(tauri_plugin_axum::block_init(async {
            println!("do something with path: {:?}", path);
            router::router()
        }))?;
        Ok(())
    })
import { axum } from "@mcitem/tauri-plugin-axum";
axum.get<string>("/").then((response) => {
  console.log(response.body); // "Hello, World!"
});
axum.post<{ axum: string; tauri: string }>("/post", {
  axum: "hello axum",
  tauri: "hello tauri",
});

import { fetch } from "@mcitem/tauri-plugin-axum/fetch";
fetch("/", { method: "GET" })
  .then((res) => res.text())
  .then((res) => {
    console.log(res);
  });

import axios from "axios";
import { Adapter } from "@mcitem/tauri-plugin-axum/axios";
const instance = axios.create({
  adapter: Adapter,
});

Run Example

git clone https://github.com/mcitem/tauri-plugin-axum
cd tauri-plugin-axum
pnpm install
pnpm build
pnpm --filter tauri-app install
pnpm --filter tauri-app tauri dev