[−][src]Module roa::header
The header module of roa.
This module provides a Request/Response extension FriendlyHeaders
.
When should we use it?
You can straightly use raw http::header::HeaderMap
in roa,
but you have to transfer value type between HeaderValue and string then
deal with other errors(not roa::Error
) by yourself.
use roa::{Context, Result, Error}; use roa::http::header::{ORIGIN, CONTENT_TYPE}; use roa::http::StatusCode; async fn get(mut ctx: Context<()>) -> Result { if let Some(value) = ctx.req().headers.get(ORIGIN) { // handle `ToStrError` let origin = value.to_str().map_err(|_err| Error::new(StatusCode::BAD_REQUEST, "", true))?; println!("origin: {}", origin); } // handle `InvalidHeaderValue` ctx.resp_mut() .headers .insert( CONTENT_TYPE, "text/plain".parse().map_err(|_err| Error::new(StatusCode::BAD_REQUEST, "", true))? ); Ok(()) }
Dealing with errors is necessary but sometimes can be annoying
If you are finding some simpler methods to deal with header value, FriendlyHeaders
is suit for you.
use roa::{Context, Result}; use roa::http::header::{ORIGIN, CONTENT_TYPE}; use roa::http::StatusCode; use roa::header::FriendlyHeaders; async fn get(mut ctx: Context<()>) -> Result { println!("origin: {}", ctx.req().must_get(ORIGIN)?); ctx.resp_mut() .insert(CONTENT_TYPE, "text/plain")?; Ok(()) }
Traits
FriendlyHeaders | A Request/Response extension. |