Я создаю очень маленький API с использованием Python, и мне было интересно, допустимо ли вообще размещать код API в классе модели при использовании фреймворков, таких как Django или Flask (с ORM, например, Peewee или Pony). Позвольте мне объяснить, что я имею в виду ...
Чтобы проиллюстрировать, что я имею в виду, представьте, что у меня есть пакет со всеми моими моделями, а затем еще один пакет с моим кодом API, который выполняется, когда клиент пингует определенный маршрут, который я определил. Как вы знаете, модели в основном предназначены только для отображения объектов в базу данных. Хотя при определенных обстоятельствах лично по какой-то причине имеет смысл размещать часть кода API в одном из определенных мной классов моделей.
Например, у меня есть модель User, которая отображает пользователя в базу данных. Кроме того, в коде API у меня есть функция для входа пользователя. Эта функция в основном устанавливает куки для входа в систему пользователя, поэтому может иметь смысл поместить их в пакет API. Тем не менее, я чувствую, что если я сделаю эту функцию методом и поместу ее в пользовательскую модель, это будет иметь смысл с точки зрения семантики и может быть легче для понимания.
class UserModel(Peewee or Pony or Django.model...):
def login(self):
"""" Login code goes here. Set cookies, login the user, etc. """
add_cookies(self.username)
return jsonify({"logged_in": True}) # Flask example...
user = UserModel()
user.login()
Однако одно из предостережений в этом заключается в том, что код моделей и код API больше не разъединяются и теперь сильно зависят друг от друга.
Поэтому, я полагаю, мой «объективный» вопрос касается приемлемости каждого из них. Сохранение моделей (базы данных и ORM) и маршрутов API лучше, чем объединение их вместе? Каковы некоторые из преимуществ и недостатков выполнения каждого из них? Какова наиболее распространенная и рекомендуемая практика?
Спасибо заранее.