un1t
@un1t

Actix web как получить параметр из querystring?

Я нашел два метода как получить GET параметры, но есть вопросы.

1 способ
Можно получить из HttpRequest, но к сожалению нельзя получить какой-то конкретный параметр можно только получить все параметры в виде строки
req.query_string()

А дальше предлагается парсить эти параметры самостоятельно? Не могу понять в чем прикол, для веб фреймворка это очень частая операция, неужели такая возможность отсуствует во фреймворке?

2 способ
Предлагается определить структуру и в нее параметры распарсятся автоматически.
Вот пример из документации.

use actix_web::{get, web};
use serde::Deserialize;

#[derive(Debug, Deserialize)]
pub struct AuthRequest {
   id: u64,
   response_type: ResponseType,
}

#[get("/")]
async fn index(info: web::Query<AuthRequest>) -> String {
    format!("Authorization request for id={} and type={:?}!", info.id, info.response_type)
}


С одной стороны что-то не хочется определять какие-то структуры за пределами хендлеров засоряя тем самым пространство имен.

Другая проблема, это то что если например папраметр отсуствует то сервер отдает HTTP 400, что логично, а саму ошибку он отдает просто текстом. Как можно сделать, чтобы завернуть эту ошибку в JSON нужного формата?
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы