Crate warp

source ·
Expand description

warp

warp is a super-easy, composable, web server framework for warp speeds.

Thanks to its Filter system, warp provides these out of the box:

  • Path routing and parameter extraction
  • Header requirements and extraction
  • Query string deserialization
  • JSON and Form bodies
  • Static Files and Directories
  • Websockets
  • Access logging
  • Etc

Since it builds on top of hyper, you automatically get:

  • HTTP/1
  • HTTP/2
  • Asynchronous
  • One of the fastest HTTP implementations
  • Tested and correct

Filters

The main concept in warp is the Filter, which allows composition to describe various endpoints in your web service. Besides this powerful trait, warp comes with several built in filters, which can be combined for your specific needs.

As a small example, consider an endpoint that has path and header requirements:

use warp::Filter;

let hi = warp::path("hello")
    .and(warp::path::param())
    .and(warp::header("user-agent"))
    .map(|param: String, agent: String| {
        format!("Hello {}, whose agent is {}", param, agent)
    });

This example composes several Filters together using and:

  • A path prefix of “hello”
  • A path parameter of a String
  • The user-agent header parsed as a String

These specific filters will reject requests that don’t match their requirements.

This ends up matching requests like:

GET /hello/sean HTTP/1.1
Host: hyper.rs
User-Agent: reqwest/v0.8.6

And it returns a response similar to this:

HTTP/1.1 200 OK
Content-Length: 41
Date: ...

Hello sean, whose agent is reqwest/v0.8.6

Take a look at the full list of filters to see what you can build.

Testing

Testing your web services easily is extremely important, and warp provides a test module to help send mocked requests through your service.

Modules

Built-in Filters
Redirect requests to a new location.
Rejections
Reply to requests.
Test utilities to test your filters.

Macros

Convenient way to chain multiple path filters together.

Structs

Errors that can happen inside warp.
A Warp Server ready to filter requests.

Traits

Composable request filters.

Functions

Create a Server with the provided service.
Spawns a future on the default executor.