Size: a a a

Rust — русскоговорящее сообществo

2020 March 30

OA

Oleg Andreev in Rust — русскоговорящее сообществo
!
источник

OA

Oleg Andreev in Rust — русскоговорящее сообществo
🙇‍♂️
источник

В

Вафель in Rust — русскоговорящее сообществo
А какие есть варианты для стандартизирования web api?

Чтобы написать спеку и по ней сгенерить код на растишке (под actix-web?)
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
Помимо swagger/openapi?
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Вафель
А какие есть варианты для стандартизирования web api?

Чтобы написать спеку и по ней сгенерить код на растишке (под actix-web?)
я сейчас пишу actix-swagger

как раз чтобы из спеки openapi3 генерировать слой для actix-web
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Вафель
А какие есть варианты для стандартизирования web api?

Чтобы написать спеку и по ней сгенерить код на растишке (под actix-web?)
https://t.me/rustlang_ru/285259

На самом деле буду благодарен за любую помощь с этим проектом
Telegram
Arc<🦉> in Rust — русскоговорящее сообществo
сделал достаточную версию генератора кода для actix_swagger.
Генерирует такое: https://github.com/sergeysova/actix-swagger/blob/master/cargo-swagg/out.rs

Впринципе, этого достаточно, чтобы писать приложения, у меня примерно такое юзается. Но тут нет исполнения контракта обработчиков запросов. Нет обязания правильно обрабатывать request body в обработчике. Я не смог найти способ это сделать через actix_web::dev::Factory.

Вот issue обсуждения: https://github.com/actix/actix-web/pull/1339

По actix-swagger:
Сейчас буду писать конвертацию yaml структур, в формат генератора кода. Скорее всего там будет пачка HashMap/BTreeMap, чтобы корректно резолвить ссылки. Первая реализация будет очень тупая, и сможет работать только со ссылками в requestBody, responses, params и прочим. Также не будет поддержки импортов из файлов.

В чем нужна помощь:
- Поревьювить код. Там почти всё написано так, чтобы получить первую рабочую версию.
- Было бы круто накидать тесты на генератор кода(называется printer). Думаю банальных inline…
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
🦉 ⁣
сделал достаточную версию генератора кода для actix_swagger.
Генерирует такое: https://github.com/sergeysova/actix-swagger/blob/master/cargo-swagg/out.rs

Впринципе, этого достаточно, чтобы писать приложения, у меня примерно такое юзается. Но тут нет исполнения контракта обработчиков запросов. Нет обязания правильно обрабатывать request body в обработчике. Я не смог найти способ это сделать через actix_web::dev::Factory.

Вот issue обсуждения: https://github.com/actix/actix-web/pull/1339

По actix-swagger:
Сейчас буду писать конвертацию yaml структур, в формат генератора кода. Скорее всего там будет пачка HashMap/BTreeMap, чтобы корректно резолвить ссылки. Первая реализация будет очень тупая, и сможет работать только со ссылками в requestBody, responses, params и прочим. Также не будет поддержки импортов из файлов.

В чем нужна помощь:
- Поревьювить код. Там почти всё написано так, чтобы получить первую рабочую версию.
- Было бы круто накидать тесты на генератор кода(называется printer). Думаю банальных inline snapshots было бы достаточно. Дать на вход разные варианты конфигурации, и получить вменяемый код.
- Преобразовать свои личные openapi3 файлы спеки апи в структуры cargo-swagg и поглядеть достаточно ли того, что там есть или нужно что-то ещё. Если нужно ещё что-то, создать issue/pr с реализацией.
источник

В

Вафель in Rust — русскоговорящее сообществo
Yevhenii Babichenko
Помимо swagger/openapi?
Не знаю что это, я в вебе полный 0)
источник

В

Вафель in Rust — русскоговорящее сообществo
🦉 ⁣
я сейчас пишу actix-swagger

как раз чтобы из спеки openapi3 генерировать слой для actix-web
Спасибо, посмотрю
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
Вафель
Не знаю что это, я в вебе полный 0)
Это такие стандарты для спецификации всяких HTTP API. Юзал их в питоне, в расте кодогенерацией для них не занимался, чисто как документация используется https://swagger.io/specification/
источник

В

Вафель in Rust — русскоговорящее сообществo
А как потом к этому логику прикручивать? Есть примеры?
источник

В

Вафель in Rust — русскоговорящее сообществo
Yevhenii Babichenko
Это такие стандарты для спецификации всяких HTTP API. Юзал их в питоне, в расте кодогенерацией для них не занимался, чисто как документация используется https://swagger.io/specification/
Понял
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Вафель
А как потом к этому логику прикручивать? Есть примеры?
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Разделение на api и app не обязательно для использования actix-swagger. Это я отделяю логику от базы и фреймворка через «интерфейсы»
источник

В

Вафель in Rust — русскоговорящее сообществo
Ух, сколько всего. Ну, буду разбираться
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Вафель
Не знаю что это, я в вебе полный 0)
Спецификация API. Типо какие запросы можно делать на сервер в каком формате и какой ответ придет. Ну это нужно если у тебя веб сервис с публичным апи, а если у тебя сайт, то это не нужно особо.
источник

В

Вафель in Rust — русскоговорящее сообществo
Yevhenii Babichenko
Это такие стандарты для спецификации всяких HTTP API. Юзал их в питоне, в расте кодогенерацией для них не занимался, чисто как документация используется https://swagger.io/specification/
Что за ужасная страница, она у меня грузиться уже больше 100 секунд!
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
Вафель
Что за ужасная страница, она у меня грузиться уже больше 100 секунд!
Странно, у меня она за несколько секунд загружается
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
Что тоже неприемлемо, т.к. такие страницы должны загружаться +- мгновенно :)
источник