Я початківець у рамках Django REST і потребую вашої поради. Я розробляю веб-сервіс. Послуга повинна надавати інтерфейс REST іншим службам. Інтерфейс REST, який мені потрібно реалізувати, не працює безпосередньо з моїми моделями (я маю на увазі операції get, put, post, delete). Натомість він надає інші послуги з деякими результатами розрахунку. На запит моя служба робить деякі розрахунки та просто повертає результати назад (не зберігає результати у власній базі даних).
Нижче моє розуміння того, як цей інтерфейс REST міг бути реалізований. Виправте мене, якщо я помиляюся.
- Створіть клас, який робить обчислення. Назвіть його "CalcClass". CalcClass використовує моделі у своїй роботі.
- Параметри, необхідні для розрахунків, передаються конструктору.
- Виконайте операцію з обчисленням. Він повертає результати як "ResultClass".
- Створити ResultClass.
- Отриманий від об'єкта.
- Він просто має атрибути, що містять результати обчислення.
- Одна частина результатів обчислення представлена у вигляді кортежних кортежів. Як я розумію, для подальшої серіалізації було б краще застосувати окремий клас для цих результатів і додати список таких об'єктів до ResultClass.
- Створіть серіалізатор для ResultClass.
- Одержуйте від серіалізаторів.
- Результати вирахування є лише для читання, тому використовуйте здебільшого клас Field для полів, а не спеціалізовані класи, наприклад IntegerField.
- Я не повинен застосовувати метод save () ані на ResultClass, ані на Serializer, оскільки я не збираюсь зберігати результати (просто хочу повернути їх за запитом).
- Impl серіалізатор для вкладених результатів (пам’ятайте про згадані вище кортежі кортежів).
- Створити Перегляд, щоб повернути результати обчислення.
- Похідні від APIView.
- Потрібно просто дістати ().
- У get () створіть CalcClass з парами, отриманими з запиту, викликайте його calc (), отримайте ResultClass, створіть Serializer і передайте йому ResultClass, поверніть Response (serializer.data).
- URL-адреси
- У моєму випадку немає кореня api. Мені просто потрібно мати URL-адреси, щоб отримати різні результати калькування (calc з різними параметрами).
- Додати переклик format_suffix_patterns для перегляду api.
Я щось пропустив? Чи правильний підхід загалом?