重叠方法路线 | Rust axum(utoipa)

问题描述 投票:0回答:1

问题就在这里。我正在使用 utoipa 生成文档。我想按组划分路线。例如,在 axum 中我们可以做这样的事情,它会正常工作:

//main.rs
Router::new().route("/user", Router::new().route("/test1", test_handler_1)
                                          .route("/test2", test_handler_2)
                                          .route("/test3", test_handler_3))

因此,我可以访问所有这些路由,即使它们具有相同的方法(以 POST/GET 为例)。

但在utoipa,由于某种原因我不能这样做。在我的项目中,我将所有路由组拆分为不同的文件,例如

user_handler
product_handler
,并创建了返回
OpenApiRouter
(user_routes、product_routes)的函数。

//product_handler.rs
pub fn product_routes() -> OpenApiRouter<Arc<Pool>> {
    OpenApiRouter::new()
    .routes(routes!(
        ...
        post_product,
        post_product_type,
        ...
    ))
}
//main.rs
OpenApiRouter::with_openapi(ApiDoc::openapi()).nest("/products", product_routes())

但是..我得到了

Overlapping method route. Cannot add two method routes that both handle 'POST' (or GET) note: run with 'RUST_BACKTRACE=1' environment variable to display a backtrace

有什么建议吗?预先感谢!

rest rust swagger openapi rust-axum
1个回答
0
投票

目前只有一种解决方案可用:

...
OpenApiRouter::new()
    .routes(routes!(get_1))
    .routes(routes!(get_2))
    .routes(routes!(get_3))
...

最主要的是:axum 专门为独特方法创建的路由(每个路由只能指定一个

post
get
)。所以,享受这个解决方案吧! =)

© www.soinside.com 2019 - 2024. All rights reserved.