Crates.io | actix-json-response |
lib.rs | actix-json-response |
version | 0.1.3 |
source | src |
created_at | 2022-04-16 20:45:56.995073 |
updated_at | 2022-04-16 21:37:08.155706 |
description | A helper type for json responses with Actix-web |
homepage | |
repository | https://github.com/moy2010/actix-json-response |
max_upload_size | |
id | 569129 |
size | 17,515 |
Add actix-json-response
to your dependencies:
[dependencies]
# ...
actix-web = "4"
actix-json-response = "0.1"
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
}
Distributed under the terms of MIT license and Apache license.