From c65f34048c70fcb85544747d7703c1e06c1e2826 Mon Sep 17 00:00:00 2001 From: Paolo Rechia Date: Wed, 10 Jan 2024 08:17:08 +0100 Subject: [PATCH] Example serving JSON --- steeldb-server/Cargo.toml | 4 +++- steeldb-server/src/main.rs | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/steeldb-server/Cargo.toml b/steeldb-server/Cargo.toml index ddb2e85..4fa9b7d 100644 --- a/steeldb-server/Cargo.toml +++ b/steeldb-server/Cargo.toml @@ -10,4 +10,6 @@ hyper = { version = "1", features = ["full"]} tokio = { version = "1", features = ["full"]} http-body-util = {version = "0.1"} hyper-util = { version = "0.1", features = ["full"]} -steeldb = { path = ".."} \ No newline at end of file +steeldb = { path = ".."} +serde = { version = "1.0.195", features = ["derive"]} +serde_json = "1.0.111" diff --git a/steeldb-server/src/main.rs b/steeldb-server/src/main.rs index e5b5014..31dd9dd 100644 --- a/steeldb-server/src/main.rs +++ b/steeldb-server/src/main.rs @@ -1,3 +1,4 @@ +use serde::{Deserialize, Serialize}; use std::convert::Infallible; use std::net::SocketAddr; @@ -9,8 +10,23 @@ use hyper::{Request, Response}; use hyper_util::rt::TokioIo; use tokio::net::TcpListener; +#[derive(Deserialize, Serialize, Debug)] +struct HelloJSON { + hello: String, +} + async fn hello(_: Request) -> Result>, Infallible> { - Ok(Response::new(Full::new(Bytes::from("Hello, World!")))) + let hello_response = HelloJSON { + hello: "world!".to_owned(), + }; + let desserialized = serde_json::to_string(&hello_response).unwrap(); + let response = Response::builder() + .header("Content-Type", "application/json") + .header("content-length", desserialized.len()) + .body(desserialized.into()) + .unwrap(); + + Ok(response) } #[tokio::main]