Attribute Macro dioxus_fullstack::prelude::server
source · #[server]Expand description
Declares that a function is a server function.
This means that its body will only run on the server, i.e., when the ssr
feature is enabled on this crate.
§Usage
ⓘ
#[server]
pub async fn blog_posts(
category: String,
) -> Result<Vec<BlogPost>, ServerFnError> {
let posts = load_posts(&category).await?;
// maybe do some other work
Ok(posts)
}§Named Arguments
You can any combination of the following named arguments:
name: sets the identifier for the server function’s type, which is a struct created to hold the arguments (defaults to the function identifier in PascalCase)prefix: a prefix at which the server function handler will be mounted (defaults to/api)endpoint: specifies the exact path at which the server function handler will be mounted, relative to the prefix (defaults to the function name followed by unique hash)input: the encoding for the arguments (defaults toPostUrl)output: the encoding for the response (defaults toJson)client: a customClientimplementation that will be used for this server fnencoding: (legacy, may be deprecated in future) specifies the encoding, which may be one of the following (not case sensitive)"Url":POSTrequest with URL-encoded arguments and JSON response"GetUrl":GETrequest with URL-encoded arguments and JSON response"Cbor":POSTrequest with CBOR-encoded arguments and response"GetCbor":GETrequest with URL-encoded arguments and CBOR response
reqandresspecify the HTTP request and response types to be used on the server (these should usually only be necessary if you are integrating with a server other than Actix/Axum)
ⓘ
#[server(
name = SomeStructName,
prefix = "/my_api",
endpoint = "my_fn",
input = Cbor,
output = Json
)]
pub async fn my_wacky_server_fn(input: Vec<String>) -> Result<usize, ServerFnError> {
unimplemented!()
}
// expands to
#[derive(Deserialize, Serialize)]
struct SomeStructName {
input: Vec<String>
}
impl ServerFn for SomeStructName {
const PATH: &'static str = "/my_api/my_fn";
// etc.
}