Я программировал с использованием django в течение последнего года или около того, и большая часть моей работы была написание API для подключения к интерфейсу на основе React. В большинстве моих руководств я вижу людей, использующих GenericAPIViews для основ, но я не нахожу ничего существенного для сложного кода в API. Поэтому, чтобы доставить свой код вовремя, я выбрал более простое решение, которое заключается в использовании APIView, где я использую меньше абстракций, больше контролирую свой код (пишу больше кода) и четко понимаю функции своих модулей кода.
Что меня беспокоит, так это то, что если я выбрал ярлык, решив не изучать, как использовать GenericAPIViews, чтобы я мог использовать его в полную силу. Некоторые проблемы, с которыми я столкнулся при использовании GenericAPIViews или DRF в целом.
- Пользовательские разрешения (например, я хочу, чтобы пользователь прошел проверку подлинности, а также имел доступ с определенным уровнем разрешений (например, can_do_xyz или has_access_to_abc)
- Использование доступных для записи сериализаторов, которым может потребоваться пройти через сложные уровни бизнес-логики / приложений
- Создание записей для нескольких моделей в одной и той же функции класса GenericAPIView.
На данный момент проблемы, с которыми я столкнулся в моем подходе к использованию базового APIView, заключаются в том, что документированная документация, которую мне удалось написать, является мусором.
- Мне нужно вручную указать поля запроса / формы / пути в документации схемы API (с использованием AutoSchema)
- Также, если в API есть методы get / post / put / delete с различными полями, каждая из конечных точек API в swagger будет показывать ВСЕ поля, используемые в методах (что понятно, так как я определяю схему для класса и не для отдельных функций). Есть ли способ решить эту проблему?
- Метод удаления должен использовать только параметр survey_id в качестве параметра, а метод POST / PUT - тело.