Hightide
--------
Hightide is an extension to the tide web framework.
It provides a higher level interface for building responses.
To use it wrap your endpoint with the `wrap` function. This wrapper allows your endpoints to
return various types that implement the `Responder` trait.
Hightide also includes a Response type that is easier to use than the one provided by
tide. It has shortcut methods for setting the body to a JSON or Form payload, and for adding
typed headers from the `hyperx` crate.
`Responder` is implemented for various types, for example `(StatusCode, impl Responder)` which
allows you to do:
```
use tide::{Request, StatusCode};
use hightide::Responder;
fn example(_: tide::Request<()>) -> impl Responder {
(StatusCode::Conflict, "Already Exists")
}
```
Which is simpler than the equivalent code from plain `tide`:
```
use tide::{Request, StatusCode};
use hightide::Responder;
fn example(_: Request<()>) -> tide::Result {
Ok(Response::builder(StatusCode::Conflict)
.body("Already Exists")
.build())
}
```
The `Json` wrapper also allows returning a JSON response more directly.
```
use tide::{Request};
use hightide::{Responder, Json};
fn example(_: tide::Request<()>) -> impl Responder {
Json(MyData{ ... })
}
```
Compared to:
```
use tide::{Request, StatusCode};
fn example(_: Request<()>) -> tide::Result {
Ok(Response::builder(StatusCode::Ok)
.body(Body::from_json(&MyData{ ... })?)
.build())
}
```