Я новичок в Django REST Framework и мне нужен ваш совет. Я занимаюсь разработкой веб-сервиса. Служба должна предоставлять интерфейс REST другим службам. Интерфейс REST, который мне нужно реализовать, не работает с моими моделями напрямую (я имею в виду операции get, put, post, delete). Вместо этого он предоставляет другим службам некоторые результаты расчетов. По запросу мой сервис выполняет некоторые вычисления и просто возвращает результаты обратно (не сохраняет результаты в своей собственной базе данных).
Ниже мое понимание того, как этот интерфейс REST может быть реализован. Поправь меня, если я ошибаюсь.
- Создать класс, который делает вычисления. Назовите его «CalcClass». CalcClass использует модели в своей работе.
- Параметры, необходимые для расчетов, передаются в конструктор.
- Реализуйте операцию calc. Возвращает результаты как ResultClass.
- Создать ResultClass.
- Получено от объекта.
- Он имеет только атрибуты, содержащие результаты вычислений.
- Одна часть результатов вычислений представлена как кортеж кортежей. Как я понимаю, для дальнейшей сериализации было бы лучше реализовать отдельный класс для этих результатов и добавить список таких объектов в ResultClass.
- Создать сериализатор для ResultClass.
- Производные от сериализаторов. Сериализатор.
- Результаты вычислений доступны только для чтения, поэтому для полей используйте в основном класс Field, а не специализированные классы, такие как IntegerField.
- Я не должен включать метод save () ни в ResultClass, ни в Serializer, потому что я не собираюсь хранить результаты (я просто хочу вернуть их по запросу).
- Impl сериализатор для вложенных результатов (помните кортеж из упомянутых выше кортежей).
- Создать представление, чтобы вернуть результаты расчета.
- Получено из APIView.
- Нужно просто получить ().
- В get () создайте CalcClass с параметрами, полученными из запроса, вызовите его calc (), получите ResultClass, создайте Serializer и передайте ему ResultClass, верните Response (serializer.data).
- URL-адрес
- В моем случае нет корня API. Мне просто нужно иметь URL-адреса, чтобы получить различные результаты вычислений (calc с diff-параметрами).
- Добавьте вызов format_suffix_patterns для просмотра API.
Я что-то пропустил? Правильный ли подход в целом?