Быстрый старт
Создание базового "Hello, World" Web API с использованием Волги.
Предварительные требования
Установка Rust
Если вы еще не установили Rust, рекомендуется использовать утилиту rustup
. Здесь — официальное руководство, где вы можете узнать, как это сделать.
В настоящее время, минимальная поддерживаемая версия Rust (MSRV) для Волги - 1.80. Запуск команды rustup update
обеспечит вам доступ к самой свежей версии Rust.
Создание приложения
Создайте новое исполняемое (binary) приложение:
cargo new hello-world
cd hello-world
Добавьте в Cargo.toml
следующие зависимости:
[dependencies]
volga = "0.5.5"
tokio = { version = "1", features = ["full"] }
Настройка
Создайте стартовую точку приложения в файле main.rs
:
use volga::{App, ok};
#[tokio::main]
async fn main() -> std::io::Result<()> {
// Создаем сервер
let mut app = App::new();
// Пример обработчика простого GET-запроса
app.map_get("/hello", || async {
ok!("Hello World!")
});
// Запускаем сервер
app.run().await
}
Подробное руководство
Структура App
, представляет ваше API и по-умолчанию привязывается к адресу http://localhost:7878
:
let mut app = App::new();
Если требуется привязать сервер к другому сокету, то, можно использовать метод bind()
, например:
// Привязка сервера к http://localhost:5000
let mut app = App::new().bind("localhost:5000");
Далее, обработчик запроса GET /hello
привязывается к маршруту:
app.map_get("/hello", || {
ok!("Hello World!")
});
Убедитесь, что все маршруты привязаны перед запуском сервера:
app.run().await
Тестирование API
Вы можете протестировать своё API при помощи команды curl
:
> curl -v "http://localhost:7878/hello"
Ожидаемый ответ:
* Host localhost:7878 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
* Trying [::1]:7878...
* Connected to localhost (::1) port 7878
> GET /hello HTTP/1.1
> Host: localhost:7878
> User-Agent: curl/8.9.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 OK
< date: Sun, 6 Oct 2024 08:22:17 +0000
< server: Volga
< content-length: 12
< content-type: text/plain
<
* Connection #0 to host localhost left intact
Hello World!
Полный пример можно найти здесь.