pub struct Http<InputProtocol, OutputProtocol>(/* private fields */);Expand description
The http protocol with specific input and output encodings for the request and response. This is the default protocol server functions use if no override is set in the server function macro
The http protocol accepts two generic argument that define how the input and output for a server
function are turned into HTTP requests and responses. For example, Http<GetUrl, Json> will
accept a Url encoded Get request and return a JSON post response.
§Example
use serde::{Serialize, Deserialize};
use server_fn::{Http, ServerFnError, codec::{Json, GetUrl}};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Message {
user: String,
message: String,
}
// The http protocol can be used on any server function that accepts and returns arguments that implement
// the [`IntoReq`] and [`FromRes`] traits.
//
// In this case, the input and output encodings are [`GetUrl`] and [`Json`], respectively which requires
// the items to implement [`IntoReq<GetUrl, ...>`] and [`FromRes<Json, ...>`]. Both of those implementations
// require the items to implement [`Serialize`] and [`Deserialize`].
#[server(protocol = Http<GetUrl, Json>)]
async fn echo_http(
input: Message,
) -> Result<Message, ServerFnError> {
Ok(input)
}Trait Implementations§
Source§impl<InputProtocol, OutputProtocol, Input, Output, Client, Server, E> Protocol<Input, Output, Client, Server, E> for Http<InputProtocol, OutputProtocol>where
Input: IntoReq<InputProtocol, Client::Request, E> + FromReq<InputProtocol, Server::Request, E> + Send,
Output: IntoRes<OutputProtocol, Server::Response, E> + FromRes<OutputProtocol, Client::Response, E> + Send,
E: FromServerFnError,
InputProtocol: Encoding,
OutputProtocol: Encoding,
Client: Client<E>,
Server: Server<E>,
impl<InputProtocol, OutputProtocol, Input, Output, Client, Server, E> Protocol<Input, Output, Client, Server, E> for Http<InputProtocol, OutputProtocol>where
Input: IntoReq<InputProtocol, Client::Request, E> + FromReq<InputProtocol, Server::Request, E> + Send,
Output: IntoRes<OutputProtocol, Server::Response, E> + FromRes<OutputProtocol, Client::Response, E> + Send,
E: FromServerFnError,
InputProtocol: Encoding,
OutputProtocol: Encoding,
Client: Client<E>,
Server: Server<E>,
Auto Trait Implementations§
impl<InputProtocol, OutputProtocol> Freeze for Http<InputProtocol, OutputProtocol>
impl<InputProtocol, OutputProtocol> RefUnwindSafe for Http<InputProtocol, OutputProtocol>where
InputProtocol: RefUnwindSafe,
OutputProtocol: RefUnwindSafe,
impl<InputProtocol, OutputProtocol> Send for Http<InputProtocol, OutputProtocol>
impl<InputProtocol, OutputProtocol> Sync for Http<InputProtocol, OutputProtocol>
impl<InputProtocol, OutputProtocol> Unpin for Http<InputProtocol, OutputProtocol>
impl<InputProtocol, OutputProtocol> UnwindSafe for Http<InputProtocol, OutputProtocol>where
InputProtocol: UnwindSafe,
OutputProtocol: UnwindSafe,
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.