Как использовать макросы атрибутов маршрутов для нескольких методов в Actix-Web - PullRequest
0 голосов
/ 20 февраля 2020

В Actix Web Framework , как использовать макросы атрибутов маршрута (#[http_method("route")]) для привязки нескольких методов http к одной функции?

Например, у меня есть этот тривиальный конечная точка:

/// Returns a UUID4.
#[get("/uuid")]
async fn uuid_v4() -> impl Responder {
    HttpResponse::Ok().json(Uuid {
        uuid: uuid::Uuid::new_v4(),
    })
}

Я хотел бы, чтобы такой же обработчик конечной точки HEAD запросов, как мне это сделать? Мой первоначальный подход состоял в том, чтобы просто сложить макросы:

/// Returns a UUID4.
#[get("/uuid")]
#[head("/uuid")]
async fn uuid_v4() -> impl Responder {
    HttpResponse::Ok().json(Uuid {
        uuid: uuid::Uuid::new_v4(),
    })
}

Но я получаю ошибку компиляции:

    |
249 | async fn uuid_v4() -> impl Responder {
    |          ^^^^^^^ the trait `actix_web::handler::Factory<_, _, _>` is not implemented for `<uuid_v4 as actix_web::service::HttpServiceFactory>::register::uuid_v4`

Я прошел через actix-web и actix-web-codegen docs и не нашел ничего, связанного с этим

...