Expand description

spa-rs is a library who can embed all SPA web application files (dist static file), and release as a single binary executable.

It based-on axum and rust_embed

It reexported all axum module for convenient use.

Example

use spa_rs::spa_server_root;
use spa_rs::SpaServer;
use spa_rs::routing::{get, Router};
use anyhow::Result;
 
spa_server_root!("web/dist");           // specific your SPA dist file location
 
#[tokio::main]
async fn main() -> Result<()> {
    let data = String::new();           // server context can be acccess by [axum::Extension]
    let mut srv = SpaServer::new();
    srv.port(3000)
        .data(data)
        .static_path("/png", "web")     // static file generated in runtime
        .route("/api", Router::new()
            .route("/get", get(|| async { "get works" })
        )
    );
    srv.run(spa_server_root!()).await?;  
 
    Ok(())
}

Session

See session module for more detail.

Dev

When writing SPA application, you may want use hot-reload functionallity provided by SPA framework. such as [vite dev] or [ng serve].

You can use spa-rs to reverse proxy all static requests to SPA framework. (need enable reverse-proxy feature)

Example

  let forward_addr = "http://localhost:1234";
  srv.reverse_proxy(forward_addr.parse()?);

Modules

HTTP body utilities.

Error handling model and utilities

Types and traits for extracting data from requests.

Conditionally dispatch requests to the inner service based on the result of a predicate.

Async functions that can be used to handle requests.

Typed HTTP Headers

A general purpose library of common HTTP types

Utilities for writing middleware

Types and traits for generating responses.

Routing between Services and handlers.

A tower middleware who can reading and writing session data from Cookie.

Macros

Return early with an HttpError

Construct an ad-hoc error from a string or existing error value.

Specific SPA dist file root path in compile time

Structs

Errors that can happen when using axum.

Extractor and response for extensions.

The error type contains a status code and a string message.

JSON Extractor / Response.

The router type for composing handlers and services.

A listening HTTP server that accepts connections in both HTTP1 and HTTP2 by default.

A server wrapped axum server.

Extractor and response that works with typed header values from [headers].

Traits

A directory of binary assets.

Used to release static file into temp dir in runtime.

Type Definitions

Alias for a type-erased error type.

convenient return type when writing axum handler.

Attribute Macros

Derive Macros