[]Struct paperclip::actix::web::Json

pub struct Json<T>(pub T);

Json helper

Json can be used for two different purpose. First is for json response generation and second is for extracting typed information from request's payload.

To extract typed information from request's body, the type T must implement the Deserialize trait from serde.

JsonConfig allows to configure extraction process.

Example

use actix_web::{web, App};
use serde_derive::Deserialize;

#[derive(Deserialize)]
struct Info {
    username: String,
}

/// deserialize `Info` from request's body
async fn index(info: web::Json<Info>) -> String {
    format!("Welcome {}!", info.username)
}

fn main() {
    let app = App::new().service(
       web::resource("/index.html").route(
           web::post().to(index))
    );
}

The Json type allows you to respond with well-formed JSON data: simply return a value of type Json where T is the type of a structure to serialize into JSON. The type T must implement the Serialize trait from serde.

use actix_web::*;
use serde_derive::Serialize;

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

fn index(req: HttpRequest) -> Result<web::Json<MyObj>> {
    Ok(web::Json(MyObj {
        name: req.match_info().get("name").unwrap().to_string(),
    }))
}

Methods

impl<T> Json<T>

pub fn into_inner(self) -> T

Deconstruct to an inner value

Trait Implementations

impl<T> Apiv2Schema for Json<T> where
    T: Apiv2Schema
[src]

JSON needs specialization because it updates the global definitions.

impl<T> Debug for Json<T> where
    T: Debug

impl<T> Deref for Json<T>

type Target = T

The resulting type after dereferencing.

impl<T> DerefMut for Json<T>

impl<T> Display for Json<T> where
    T: Display

impl<T> FromRequest for Json<T> where
    T: DeserializeOwned + 'static, 

Json extractor. Allow to extract typed information from request's payload.

To extract typed information from request's body, the type T must implement the Deserialize trait from serde.

JsonConfig allows to configure extraction process.

Example

use actix_web::{web, App};
use serde_derive::Deserialize;

#[derive(Deserialize)]
struct Info {
    username: String,
}

/// deserialize `Info` from request's body
async fn index(info: web::Json<Info>) -> String {
    format!("Welcome {}!", info.username)
}

fn main() {
    let app = App::new().service(
        web::resource("/index.html").route(
           web::post().to(index))
    );
}

type Error = Error

The associated error which can be returned.

type Future = Pin<Box<dyn Future<Output = Result<Json<T>, Error>> + 'static>>

Future that resolves to a Self

type Config = JsonConfig

Configuration for this extractor

impl<T> OperationModifier for Json<T> where
    T: Apiv2Schema
[src]

impl<T> Responder for Json<T> where
    T: Serialize

type Error = Error

The associated error which can be returned.

type Future = Ready<Result<Response<Body>, Error>>

The future response value.

Auto Trait Implementations

impl<T> RefUnwindSafe for Json<T> where
    T: RefUnwindSafe

impl<T> Send for Json<T> where
    T: Send

impl<T> Sync for Json<T> where
    T: Sync

impl<T> Unpin for Json<T> where
    T: Unpin

impl<T> UnwindSafe for Json<T> where
    T: UnwindSafe

Blanket Implementations

impl<T, A, P> Access<T> for P where
    A: Access<T>,
    P: Deref<Target = A>, 
[src]

type Guard = <A as Access<T>>::Guard

A guard object containing the value and keeping it alive. Read more

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Apiv2Schema for T where
    T: TypedData
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T, A> DynAccess<T> for A where
    A: Access<T>,
    <A as Access<T>>::Guard: 'static, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 

type Err = <U as TryFrom<T>>::Err

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,