mirror of
https://github.com/actix/actix-extras.git
synced 2025-06-25 18:09:22 +02:00
add ErrorHandlers middleware
This commit is contained in:
@ -210,3 +210,37 @@ fn main() {
|
||||
# let _ = sys.run();
|
||||
}
|
||||
```
|
||||
|
||||
## Error handlers
|
||||
|
||||
`ErrorHandlers` middleware allows to provide custom handlers for responses.
|
||||
|
||||
You can use `ErrorHandlers::handler()` method to register a custom error handler
|
||||
for specific status code. You can modify existing response or create completly new
|
||||
one. Error handler can return response immediately or return future that resolves
|
||||
to a response.
|
||||
|
||||
```rust
|
||||
# extern crate actix_web;
|
||||
use actix_web::{
|
||||
App, HttpRequest, HttpResponse, Result,
|
||||
http, middleware::Response, middleware::ErrorHandlers};
|
||||
|
||||
fn render_500<S>(_: &mut HttpRequest<S>, resp: HttpResponse) -> Result<Response> {
|
||||
let mut builder = resp.into_builder();
|
||||
builder.header(http::header::CONTENT_TYPE, "application/json");
|
||||
Ok(Response::Done(builder.into()))
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let app = App::new()
|
||||
.middleware(
|
||||
ErrorHandlers::new()
|
||||
.handler(http::StatusCode::INTERNAL_SERVER_ERROR, render_500))
|
||||
.resource("/test", |r| {
|
||||
r.method(http::Method::GET).f(|_| HttpResponse::Ok());
|
||||
r.method(http::Method::HEAD).f(|_| HttpResponse::MethodNotAllowed());
|
||||
})
|
||||
.finish();
|
||||
}
|
||||
```
|
||||
|
Reference in New Issue
Block a user