посоны, подскажите.
есть ручка, которая понимает пост запрос и есть json с кучей разных полей, которые хотелось бы уметь изменять как хочется. но как сделано сейчас - засторены несколько часто юзающихся типовых словарей, которым можно некоторые поля подтюнить. что-то мне подсказывает, что это не очень красиво, органично, ритмично, вокалично. прав ли я?
если да, как это сделать красиво? описать это "моделью" с помощью какого-то pydantic (датаклассы нам пока не завезли, сразу говорю). смущает еще момент, что некоторые поля (прямо скажем дохуя какие) могут быть, в зависимости от значений одного определенного поля, а могут и не быть. реквест вроде как не развернет, если я пришлю валидные ненужные данные, но хотелось бы как-то красиво уметь изменять структуру и расширять, в зависимости от зачений некоторых полей.
я хз, у меня наркотическая технология
- модели запросов к эндпоинтам лежат ввиде ямлов, там описаны чо как слать, хедеры, какие поля в реквесте(и названия функций для заполнения их позитивными значениями), какие в респонсе и их типы, и дополнительные данные типа связки полей (если в поле А значение Х, то в поле Б должно быть Н, а поля Е вообще быть не должно). Ямлы потому что их можно редактировать руками, причем не ток мне, и их можно генерить со свагера, вики, txt файла лида или еще откуда.
- епический код создает класс запроса, туда тупо сетает поля по модели, плюс отдельными блоками зафигачивает все линковки и тп ввиде функций
- тесты юзают их для апи тестов, дергая функции для установки значений
- до кучи для каждого поля по его типу (тип не ток интежер например, но и типа user_id) генерируется набор тестов на основании этого типа - баундари, спецсимволы в инт и прочая лабуда с курсов для тестирования, плюс дата специфичные тесты (типа юзер айди например - только uuid).
- response базово валидируется по параметрам из модели (должны быть такие то поля со значениями таких то типов), дальше уже валят кастомные матчеры общие, данного теста или группы тестов