#actix-web #json #actix

actix-json-response

A helper type for json responses with Actix-web

4 releases

0.1.3 Apr 16, 2022
0.1.2 Apr 16, 2022
0.1.1 Apr 16, 2022
0.1.0 Apr 16, 2022

#67 in #actix

Download history 87/week @ 2024-07-31 96/week @ 2024-08-07 100/week @ 2024-08-14 12/week @ 2024-08-21 6/week @ 2024-08-28 20/week @ 2024-09-04 129/week @ 2024-09-11 116/week @ 2024-09-18 162/week @ 2024-09-25 26/week @ 2024-10-02 62/week @ 2024-10-16 99/week @ 2024-10-23 33/week @ 2024-10-30 16/week @ 2024-11-06 41/week @ 2024-11-13

211 downloads per month

MIT/Apache

7KB

Actix Json Response

A library that exposes a helper type for Json responses in Actix-Web.

Continuous Integration license-badge rust-version-badge

Getting started

How to install

Add actix-json-response to your dependencies:

[dependencies]
# ...
actix-web = "4"
actix-json-response = "0.1"

Quickstart

actix-json-response exposes the JsonResponse type which implements Actix's Responder trait. It is generic and receives a type parameter that must implement Serde's Serialize trait:

use actix_web::{get, web, Result};
use actix_json_response::JsonResponse;
use serde::Serialize;

#[derive(Serialize)]
struct MyObj {
    name: String,
}

#[get("/a/{name}")]
async fn index(name: web::Path<String>) -> Result<JsonResponse<MyObj>> {
    let my_obj = MyObj {
        name: name.to_string(),
    };
    Ok(my_obj.into())
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    use actix_web::{App, HttpServer};

    HttpServer::new(|| App::new().service(index))
        .bind(("127.0.0.1", 8080))?
        .run()
        .await
}

By default, the response will have status code 200. If you need the response to have a different status code, you can use the with_status_code method that receives an Actix's StatusCode:

use actix_web::http::StatusCode;

#[get("/a/{name}")]
async fn index(name: web::Path<String>) -> Result<JsonResponse<MyObj>> {
    let my_obj = MyObj {
        name: name.to_string(),
    };
    Ok(JsonResponse::from(my_obj).with_status_code(StatusCode::CREATED)) // The response will have status code 201 in this case
}

License

Distributed under the terms of MIT license and Apache license.

Dependencies

~15–25MB
~432K SLoC