Вы можете использовать экстрактор:
- Определение структуры, которую можно десериализовать из необработанных данных.
- Определение обработчика, который принимает экстрактор. В вашем случае используйте
Form
, как сказал Николай , с параметром типа вашей структуры.
- Зарегистрируйте этот обработчик.
Если вы посмотрите на простой пример в связанной документации, вы увидите, как описать такой обработчик.
Вот немного более полный:
Определить структуру
#[derive(Deserialize)]
struct AddHook {
id: u64,
title: String,
version: Option<String>,
code: Option<String>
}
Определить обработчик
fn remove_hook_del((query, state): (Form<AddHook>, State<AppState>)) -> FutureHttpResponse {
let query = query.into_inner();
let AddHook {id, title, version, code} = query;
//Do something with your data
}
Обработчик регистра
App::with_state(AppState::new()).resource("/remove_hook", |res| {
res.method(Method::GET).with(remove_hook_get);
res.method(Method::DELETE).with(remove_hook_del);
res.route().f(not_allowed);
})
Это более или менее полный пример для текущей основной ветви actix-web
. Я также сделал это с помощью состояния, чтобы показать, как вы можете использовать несколько аргументов в вашем обработчике