小编Mis*_*ppy的帖子

如何设计具有测试友好性的 Axum 服务器?

当我尝试使用axum构建应用程序时,我未能将框架与处理程序分开。对于Go,经典的方法是定义一个Interface,实现它并将处理程序注册到框架。通过这种方式,可以很容易地提供一个模拟处理程序来进行测试。然而,我无法让它与 Axum 一起工作。我trait像上面一样定义了 a ,但它不会编译:

use std::net::ToSocketAddrs;
use std::sync::{Arc, Mutex};
use serde_derive::{Serialize, Deserialize};
use serde_json::json;
use axum::{Server, Router, Json};

use axum::extract::Extension;
use axum::routing::BoxRoute;
use axum::handler::get;

#[tokio::main]
async fn main() {
    let app = new_router(
        Foo{}
    );
    axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
        .serve(app.into_make_service())
        .await
        .unwrap();
}

trait Handler {
    fn get(&self, get: GetRequest) -> Result<GetResponse, String>;
}

struct Foo {}

impl Handler for Foo {
    fn get(&self, req: GetRequest) -> Result<GetResponse, String> {
        Ok(GetResponse{ message: "It works.".to_owned()})
    }
} …
Run Code Online (Sandbox Code Playgroud)

rust rust-axum

9
推荐指数
1
解决办法
4871
查看次数

标签 统计

rust ×1

rust-axum ×1