Crate actix_web_codegen

source ·
Expand description

Routing and runtime macros for Actix Web.

§Actix Web Re-exports

Actix Web re-exports a version of this crate in it’s entirety so you usually don’t have to specify a dependency on this crate explicitly. Sometimes, however, updates are made to this crate before the actix-web dependency is updated. Therefore, code examples here will show explicit imports. Check the latest actix-web attributes docs to see which macros are re-exported.

§Runtime Setup

Used for setting up the actix async runtime. See main macro docs.

#[actix_web_codegen::main] // or `#[actix_web::main]` in Actix Web apps
async fn main() {
    async { println!("Hello world"); }.await
}

§Single Method Handler

There is a macro to set up a handler for each of the most common HTTP methods that also define additional guards and route-specific middleware.

See docs for: GET, POST, PATCH, PUT, DELETE, HEAD, CONNECT, OPTIONS, TRACE

#[get("/test")]
async fn get_handler() -> HttpResponse {
    HttpResponse::Ok().finish()
}

§Multiple Method Handlers

Similar to the single method handler macro but takes one or more arguments for the HTTP methods it should respond to. See route macro docs.

#[route("/test", method = "GET", method = "HEAD")]
async fn get_and_head_handler() -> HttpResponse {
    HttpResponse::Ok().finish()
}

§Multiple Path Handlers

Acts as a wrapper for multiple single method handler macros. It takes no arguments and delegates those to the macros for the individual methods. See routes macro docs.

#[routes]
#[get("/test")]
#[get("/test2")]
#[delete("/test")]
async fn example() -> HttpResponse {
    HttpResponse::Ok().finish()
}

Attribute Macros§

  • Creates route handler with actix_web::guard::Connect.
  • Creates route handler with actix_web::guard::Delete.
  • Creates route handler with actix_web::guard::Get.
  • Creates route handler with actix_web::guard::Head.
  • Marks async main function as the Actix Web system entry-point.
  • Creates route handler with actix_web::guard::Options.
  • Creates route handler with actix_web::guard::Patch.
  • Creates route handler with actix_web::guard::Post.
  • Creates route handler with actix_web::guard::Put.
  • Creates resource handler, allowing multiple HTTP method guards.
  • Creates resource handler, allowing multiple HTTP methods and paths.
  • Prepends a path prefix to all handlers using routing macros inside the attached module.
  • Marks async test functions to use the Actix Web system entry-point.
  • Creates route handler with actix_web::guard::Trace.