From 88f4dd6bd6e2acebc36c37d9b183dc9d3d24c1cb Mon Sep 17 00:00:00 2001 From: David Westgate Date: Tue, 23 Apr 2024 13:22:09 -0700 Subject: [PATCH] add the API routes with axum --- src/api.rs | 33 +++++++++++++++++++++++++++++++++ src/main.rs | 13 ++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 src/api.rs diff --git a/src/api.rs b/src/api.rs new file mode 100644 index 0000000..fca9ac3 --- /dev/null +++ b/src/api.rs @@ -0,0 +1,33 @@ +use axum::{ + http::StatusCode, + response::{IntoResponse, Response}, +}; +/** +GET /questions (empty body; return JSON) +POST /questions (JSON body; return HTTP status code) +PUT /questions/:questionId (JSON body, return HTTP status code) +DELETE /questions/:questionId (empty body; return HTTP status code) +POST /answers (www-url-encoded body; return HTTP status code) + * + */ +pub async fn get_questions() -> Response { + //TODO + (StatusCode::OK, " Get Questions").into_response() +} + +pub async fn post_questions() -> Response { + //TODO + (StatusCode::CREATED, "Post Questions").into_response() +} +pub async fn put_questions() -> Response { + //TODO + (StatusCode::CREATED, "Put Questions..").into_response() +} +pub async fn delete_questions() -> Response { + //TODO + (StatusCode::OK, "Delete Questions..").into_response() +} +pub async fn post_answers() -> Response { + //TODO + (StatusCode::CREATED, "Post Answers..").into_response() +} diff --git a/src/main.rs b/src/main.rs index 09efc70..f3c5d45 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,8 @@ - +mod api; use axum::{ http::StatusCode, response::{IntoResponse, Response}, - routing::get, + routing::{delete, get, post, put}, Router, }; use std::net::SocketAddr; @@ -13,8 +13,15 @@ async fn handle() -> Response { #[tokio::main] async fn main() { - let app = Router::new().route("/", get(handle)); let ip = SocketAddr::new([127, 0, 0, 1].into(), 3000); let listener = tokio::net::TcpListener::bind(ip).await.unwrap(); + let apis = Router::new() + .route("/questions", get(api::get_questions)) + .route("/questions", post(api::post_questions)) + .route("/questions/:id", put(api::put_questions)) + .route("/questions", delete(api::delete_questions)) + .route("/answers", post(api::post_answers)); + let app = Router::new().route("/", get(handle)).merge(apis); + axum::serve(listener, app).await.unwrap(); }