tauri-plugin-axum 0.3.0

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

tauri-plugin-axum

Crates.io Version NPM Version

Install

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

Example

#[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),
    })
}

tauri::Builder::default()
    .plugin(tauri_plugin_axum::init(
        Router::new()
            .route("/", routing::get(|| async { "Hello, World!" }))
            .route("/post", routing::post(post_handle))
    ))
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