#actix-web #error-response #http-response #error #web #response #http

actix-web-thiserror

Extend thiserror crate functionality for actix-web

8 releases

0.2.7 Jun 16, 2024
0.2.6 Jun 14, 2024
0.2.1 Mar 10, 2024
0.2.0 Jun 13, 2023
0.1.7 Apr 26, 2023

#130 in HTTP server

Download history 3847/week @ 2024-07-20 2901/week @ 2024-07-27 4372/week @ 2024-08-03 5146/week @ 2024-08-10 2959/week @ 2024-08-17 1239/week @ 2024-08-24 2464/week @ 2024-08-31 3299/week @ 2024-09-07 3963/week @ 2024-09-14 3021/week @ 2024-09-21 3016/week @ 2024-09-28 1720/week @ 2024-10-05 3506/week @ 2024-10-12 4383/week @ 2024-10-19 3610/week @ 2024-10-26 4244/week @ 2024-11-02

15,864 downloads per month

MIT license

12KB
116 lines

actix-web-thiserror

License Contributors GitHub Repo stars crates.io

A crate that extends the thiserror crate functionality to automatically return a proper actix-web response.

Documentation

Error definition

use actix_web_thiserror::ResponseError;
use thiserror::Error;

#[derive(Debug, Error, ResponseError)]
pub enum Base64ImageError {
  #[response(reason = "INVALID_IMAGE_FORMAT")]
  #[error("invalid image format")]
  InvalidImageFormat,
  #[response(reason = "INVALID_STRING")]
  #[error("invalid string")]
  InvalidString,
}

Error implementation

pub async fn error_test() -> Result<HttpResponse, Error> {
  Err(Base64ImageError::InvalidImageFormat)?
}

Error response

The reason is a string that may be given to the client in some form to explain the error, if appropriate. Here it is as an enum that can be localized.

Note: This response has been formatted by a ResponseTransform. To specify a custom ResponseTransform, implement ResponseTransform and add #[response(transform = custom)] under your derive.

{
    "result": 0,
    "reason": "INVALID_IMAGE_FORMAT"
}

Error logging

The error text automatically prints to the log when the error is returned out through a http response.

Apr 23 02:19:35.211 ERROR Response error: invalid image format
    Base64ImageError(InvalidImageFormat), place: example/src/handler.rs:5 example::handler

Dependencies

~15–26MB
~438K SLoC