quorum_core/routes/echo.rs
1//! A simple echo route that returns the message sent in the request.
2//! THis is useful for testing that the server responds to a given request and that the request is properly formatted.
3
4use axum::Json;
5use serde::{Deserialize, Serialize};
6
7#[derive(Deserialize)]
8pub struct EchoRequest {
9 pub message: String,
10}
11
12#[derive(Serialize)]
13pub struct EchoResponse {
14 pub echoed: String,
15}
16
17/// Echoes back the message sent in the request.
18///
19/// # Arguments
20/// * `payload` - The JSON payload containing the message to be echoed.
21///
22/// # Returns
23/// A JSON response containing the echoed message.
24///
25/// # Example
26/// ```
27/// use axum::Json;
28/// use serde_json::json;
29///
30/// let payload = Json(json!({ "message": "Hello, world!" }));
31/// let response = echo(payload).await;
32/// assert_eq!(response.echoed, "Hello, world!");
33/// ```
34pub async fn echo(Json(payload): Json<EchoRequest>) -> Json<EchoResponse> {
35 Json(EchoResponse {
36 echoed: payload.message,
37 })
38}