Что касается собственного API actix-web
, то между 1.0
и 2.0
действительно мало что изменилось. Это хорошо, так как в вашем распоряжении все еще есть знакомый API для настройки маршрутов, данных приложения, регистратора и т. Д. c.
Одна вещь, которая меняет то, что actix-web
переместилась в asyn c / Ждите. Ваше приложение также должно адаптироваться к нему:
//# actix-rt = "1.0"
//# actix-web = "2.0"
//# futures = "0.3"
use actix_web::{web, App, HttpServer, Responder};
use futures::future;
async fn utils_one() -> impl Responder {
"Utils one reached\n"
}
async fn health() -> impl Responder {
"All good\n"
}
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
let s1 = HttpServer::new(move || {
App::new().service(web::scope("/utils").route("/one", web::get().to(utils_one)))
})
.bind("0.0.0.0:3006")?
.run();
let s2 = HttpServer::new(move || {
App::new().service(web::resource("/health").route(web::get().to(health)))
})
.bind("0.0.0.0:8080")?
.run();
future::try_join(s1, s2).await?;
Ok(())
}
Я полагаю, что вы все еще можете использовать Server::build
API для создания нескольких привязок, но подход, показанный здесь, является более модульным. HttpServer::run
просто возвращает Future
сейчас. Затем вы присоединяетесь к ним и ждете их обоих.
Работает, как и ожидалось:
$ curl http://127.0.0.1:3006/utils/one
Utils one reached
$ curl http://127.0.0.1:8080/health
All good