Crate afire

source · []
Expand description

🔥 afire

A blazing fast dependency free web framework for Rust

💠 Install

Just add the following to your Cargo.toml:

[dependencies]
afire = "0.4.0"

📄 Info

This is kinda like express.js for rust. It is not that complicated but it still makes development of apis / web servers much easier. It supports Middleware and comes with some built in for Static File Serving, Logging and Rate limiting.

For more information on this lib check the docs here

💥 Examples

For some examples go here.

Here is a super simple example:

// Import Lib
use afire::{Server, Method, Response, Header, Content};

// Create Server
let mut server: Server = Server::new("localhost", 8080);

// Add a route
server.route(Method::GET, "/greet/{name}", |req| {
  let name = req.path_param("name").unwrap();

  Response::new()
    .text(format!("Hello, {}", name))
    .content(Content::TXT)
});

// Start the server
// This is blocking
server.start().unwrap();

🔧 Features

Here I will outline interesting features that are available in afire.

  • Builtin Middleware

afire comes with some builtin extensions in the form of middleware. Currently the builtin middleware includes rate_limit, logging, and serve_static. For these you will need to enable the features.

To use these extra features enable them like this:

afire = { version = "0.4.0", features = ["rate_limit", "logging", "serve_static"] }
  • Content Types

As an easy way to set the Content-Type of a Response you can use the .content methood of the Response. Then you can put one of the common predefined types.

// Import Lib
use afire::{Server, Method, Response, Header, Content};

// Create Server
let mut server: Server = Server::new("localhost", 8080);

// Add a route
server.route(Method::GET, "/", |_req| {
  Response::new()
    .text("Hello, World!")
    .content(Content::TXT)
});

// Start the server
// This is blocking
server.start().unwrap();

Re-exports

pub use middleware::Middleware;

Modules

Internal Functions

Middleware is code that runs before and after the routes. They can be used to Log Requests, Ratelimit Requests, add Analytics, etc.

Prelude

Structs

Represents a Cookie

Http header

Struct for holding query data

Http Request

Http Response

Defines a route.

Defines a server.

Represents a Client’s Cookie

Enums

Common MIME types

Methods for a request