Как создать конечную точку с ключевым словом Rust в качестве динамического параметра запроса? - PullRequest
0 голосов
/ 05 января 2019

Я использую библиотеку Rocket, и мне нужно создать конечную точку, которая содержит динамический параметр "тип", ключевое слово.

Я пробовал что-то подобное, но оно не компилируется:

#[get("/offers?<type>")]
pub fn offers_get(type: String) -> Status {
    unimplemented!()
}

ошибка компилятора:

error: expected argument name, found keyword `type`

Возможно ли иметь параметр с именем "type" в ракете? Я не могу переименовать параметр из-за спецификации, которой я следую.

1 Ответ

0 голосов
/ 06 января 2019

Существует известное ограничение для именования параметров запроса, таких как зарезервированные ключевые слова. Это выделено в документации по теме Переименование поля . В нем упоминается, как решить вашу проблему с помощью небольшого количества дополнительного кода. Пример для вашего варианта использования:

use rocket::request::Form;

#[derive(FromForm)]
struct External {
    #[form(field = "type")]
    api_type: String
}

#[get("/offers?<ext..>")]
fn offers_get(ext: Form<External>) -> String {
    format!("type: '{}'", ext.api_type)
}

Для запроса GET /offers?type=Hello,%20World! он должен вернуть type: 'Hello, World!'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...