В следующем коде я хочу перенаправить из конечной точки index в конечную точку hello.
#[get("/hello")]
async fn hello() -> impl Responder {
HttpResponse::Ok().body("Hello world!")
}
#[post("/")]
async fn index(req_body: String) -> impl Responder {
//Logic
//Redirect to route /hello
}
Я пытался использовать явно Redirect::to, но вместо POST выполняется запрос GET.
#[post("/")]
async fn index(req_body: String) -> impl Responder {
//Logic
Redirect::to("/hello").permanent()
}
actix_web::middleware::logger] 127.0.0.1 "POST /index HTTP/1.1
actix_web::middleware::logger] 127.0.0.1 "POST /hello HTTP/1.1
Есть ли у кого-нибудь решения или разные подходы к этой проблеме?





Похоже, вам нужен редирект 303 See Other. Из документации MDN:
Обработка метода
GETметоды без изменений. Другие изменились наGET(тело потеряно).Типичный вариант использования
Используется для перенаправления после
PUTилиPOST, чтобы обновление страницы результатов не запускало операцию повторно.
Вы можете сделать это в Actix-Web с помощью цепного метода .see_other():
Redirect::to("/hello").see_other()