MyApp

<back to all web services

HelloAllTypes

#![allow(
    dead_code,
    non_camel_case_types,
    non_snake_case,
    clippy::upper_case_acronyms
)]

use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct SubType {
    pub id: i32,
    pub name: String,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct AllTypes {
    pub id: i32,
    #[serde(rename = "nullableId")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub nullable_id: Option<i32>,
    pub byte: u8,
    pub short: i16,
    pub int: i32,
    pub long: i64,
    #[serde(rename = "uShort")]
    pub u_short: u16,
    #[serde(rename = "uInt")]
    pub u_int: u32,
    #[serde(rename = "uLong")]
    pub u_long: u64,
    pub float: f32,
    pub double: f64,
    pub decimal: f64,
    pub string: String,
    #[serde(rename = "dateTime")]
    pub date_time: String,
    #[serde(rename = "timeSpan")]
    pub time_span: String,
    #[serde(rename = "dateTimeOffset")]
    pub date_time_offset: String,
    pub guid: String,
    pub char: char,
    #[serde(rename = "keyValuePair")]
    pub key_value_pair: KeyValuePair<String, String>,
    #[serde(rename = "nullableDateTime")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub nullable_date_time: Option<String>,
    #[serde(rename = "nullableTimeSpan")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub nullable_time_span: Option<String>,
    #[serde(rename = "stringList")]
    pub string_list: Vec<String>,
    #[serde(rename = "stringArray")]
    pub string_array: Vec<String>,
    #[serde(rename = "stringMap")]
    pub string_map: HashMap<String, String>,
    #[serde(rename = "intStringMap")]
    pub int_string_map: HashMap<i32, String>,
    #[serde(rename = "subType")]
    pub sub_type: SubType,
    pub point: String,
    #[serde(rename = "aliasedName")]
    pub original_name: String,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct Poco {
    pub name: String,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct AllCollectionTypes {
    #[serde(rename = "intArray")]
    pub int_array: Vec<i32>,
    #[serde(rename = "intList")]
    pub int_list: Vec<i32>,
    #[serde(rename = "stringArray")]
    pub string_array: Vec<String>,
    #[serde(rename = "stringList")]
    pub string_list: Vec<String>,
    #[serde(rename = "pocoArray")]
    pub poco_array: Vec<Poco>,
    #[serde(rename = "pocoList")]
    pub poco_list: Vec<Poco>,
    #[serde(rename = "nullableByteArray")]
    pub nullable_byte_array: Vec<Option<u8>>,
    #[serde(rename = "nullableByteList")]
    pub nullable_byte_list: Vec<Option<u8>>,
    #[serde(rename = "nullableDateTimeArray")]
    pub nullable_date_time_array: Vec<Option<String>>,
    #[serde(rename = "nullableDateTimeList")]
    pub nullable_date_time_list: Vec<Option<String>>,
    #[serde(rename = "pocoLookup")]
    pub poco_lookup: HashMap<String, Vec<Poco>>,
    #[serde(rename = "pocoLookupMap")]
    pub poco_lookup_map: HashMap<String, Vec<HashMap<String, Poco>>>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct HelloAllTypesResponse {
    pub result: String,
    #[serde(rename = "allTypes")]
    pub all_types: AllTypes,
    #[serde(rename = "allCollectionTypes")]
    pub all_collection_types: AllCollectionTypes,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct HelloAllTypes {
    pub name: String,
    #[serde(rename = "allTypes")]
    pub all_types: AllTypes,
    #[serde(rename = "allCollectionTypes")]
    pub all_collection_types: AllCollectionTypes,
}

Rust HelloAllTypes DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /jsv/reply/HelloAllTypes HTTP/1.1 
Host: blazor-gallery.servicestack.net 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	name: String,
	allTypes: 
	{
		id: 0,
		nullableId: 0,
		byte: 0,
		short: 0,
		int: 0,
		long: 0,
		uShort: 0,
		uInt: 0,
		uLong: 0,
		float: 0,
		double: 0,
		decimal: 0,
		string: String,
		dateTime: 0001-01-01,
		timeSpan: PT0S,
		dateTimeOffset: 0001-01-01T00:00:00.0000000+00:00,
		guid: 00000000-0000-0000-0000-000000000000,
		char: ,
		keyValuePair: 
		{
			key: String,
			value: String
		},
		nullableDateTime: 0001-01-01,
		nullableTimeSpan: PT0S,
		stringList: 
		[
			String
		],
		stringArray: 
		[
			String
		],
		stringMap: 
		{
			String: String
		},
		intStringMap: 
		{
			0: String
		},
		subType: 
		{
			id: 0,
			name: String
		},
		point: "0,0",
		aliasedName: String
	},
	allCollectionTypes: 
	{
		intArray: 
		[
			0
		],
		intList: 
		[
			0
		],
		stringArray: 
		[
			String
		],
		stringList: 
		[
			String
		],
		pocoArray: 
		[
			{
				name: String
			}
		],
		pocoList: 
		[
			{
				name: String
			}
		],
		nullableByteArray: 
		[
			0
		],
		nullableByteList: 
		[
			0
		],
		nullableDateTimeArray: 
		[
			0001-01-01
		],
		nullableDateTimeList: 
		[
			0001-01-01
		],
		pocoLookup: 
		{
			String: 
			[
				{
					name: String
				}
			]
		},
		pocoLookupMap: 
		{
			String: 
			[
				{
					String: 
					{
						name: String
					}
				}
			]
		}
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	result: String,
	allTypes: 
	{
		id: 0,
		nullableId: 0,
		byte: 0,
		short: 0,
		int: 0,
		long: 0,
		uShort: 0,
		uInt: 0,
		uLong: 0,
		float: 0,
		double: 0,
		decimal: 0,
		string: String,
		dateTime: 0001-01-01,
		timeSpan: PT0S,
		dateTimeOffset: 0001-01-01T00:00:00.0000000+00:00,
		guid: 00000000-0000-0000-0000-000000000000,
		char: ,
		keyValuePair: 
		{
			key: String,
			value: String
		},
		nullableDateTime: 0001-01-01,
		nullableTimeSpan: PT0S,
		stringList: 
		[
			String
		],
		stringArray: 
		[
			String
		],
		stringMap: 
		{
			String: String
		},
		intStringMap: 
		{
			0: String
		},
		subType: 
		{
			id: 0,
			name: String
		},
		point: "0,0",
		aliasedName: String
	},
	allCollectionTypes: 
	{
		intArray: 
		[
			0
		],
		intList: 
		[
			0
		],
		stringArray: 
		[
			String
		],
		stringList: 
		[
			String
		],
		pocoArray: 
		[
			{
				name: String
			}
		],
		pocoList: 
		[
			{
				name: String
			}
		],
		nullableByteArray: 
		[
			0
		],
		nullableByteList: 
		[
			0
		],
		nullableDateTimeArray: 
		[
			0001-01-01
		],
		nullableDateTimeList: 
		[
			0001-01-01
		],
		pocoLookup: 
		{
			String: 
			[
				{
					name: String
				}
			]
		},
		pocoLookupMap: 
		{
			String: 
			[
				{
					String: 
					{
						name: String
					}
				}
			]
		}
	}
}