1

Не уверен, что у этого есть реальный ответ или нет, но здесь идет.Appengine Python Webapp2 API Логическая структура

Я создаю webapp, используя webapp2 на appengine, который будет предоставлять JSON API только клиентам (кроме шаблонов HTML-шаблонов для браузеров).

У меня есть main.py, который направляет входящие URL-адреса обработчикам. Обработчики разделяются на модули по функциям (т.е. user_auth, user_info, группы и т. Д.). У меня есть модуль models.py, где живут мои ndb.Model.

Самый низкий уровень кода с участием Model S содержатся в Model подклассов в models.py (т.е. models.Group имеет classmethod называется create_group, который вызывается groups.AddGroupHandler.add_group, который вызывается groups.AddGroupHandler.post.)

I также есть модуль api.py, который содержит классы для всего поведения webapp (то есть api.UserAuth, api.Signup, api.RegistrationVerification и т. д.), который содержит методы класса, которые возвращают JSON для этих действий (то есть api.UserAuth.session_expired, api.RegistrationVerification.bad_token и т. д.).

Методы в api.py вызывают методы «низкого уровня» в моделях, «вспомогательные» методы в модулях обработчика (то есть groups.AddGroupHandler.add_group и т. Д.) И сами методы обработчика (то есть groups.AddGroupHandler.post , и т.д...).

Является ли эта структура причиной проблем в будущем, или это прекрасно, как есть? Кроме того, существуют ли какие-либо стандартные структуры, которые, как известно, работают для такого проекта?

EDIT: Я не использую REST или что-то в этом роде.

+3

Вы знакомы с шаблоном проектирования контроллеров модели (MVC)? Это вообще очень полезно. В вашем конкретном случае вы хотите отделить свою «Модель» от своего «Контроллера», чтобы упростить ее поддержку в будущем. «Просмотр» по существу будет вашим кодом JSON-сериализации. – dragonx

+0

Если вы сопоставляете URL-адреса с API-интерфейсами, вы используете REST: http://en.wikipedia.org/wiki/Representational_state_transfer –

+0

@dragonx Спасибо. Я смутно знаю об этом, но сейчас я рассмотрю его немного глубже. – Eliezer

ответ

2

Я настоятельно рекомендую вам ознакомиться с облачными конечными точками Google, поскольку он позволяет вам создавать API с использованием инфраструктуры конечных точек, а затем Google предоставляет клиентские библиотеки для использования, чтобы вам не нужно было сворачивать свои собственные iOS, Android, Javascript и т. Д. Для связи с вашим уровнем обслуживания.

https://developers.google.com/appengine/docs/java/endpoints/

Там немного кривой обучения, но как только вы получите через него, это хорошая возможность работать. Он также включает в себя такие функции, как поддержка OAuth 2.0, в которой в противном случае вам нужно будет сворачивать самостоятельно, если вы хотите иметь аутентификацию на своем уровне обслуживания.

+0

Кажется, что это будет работать только с Java? Я использую Python. – Eliezer

+0

Крысы - отправил неправильный URL :(Извините за это .. Вот документы python https://developers.google.com/appengine/docs/python/endpoints/ – earthtrip

+0

Спасибо большое! Я недооценил, насколько это полезно в первый раз, когда я прочитал об этом, но это именно то, что я искал. – Eliezer

Смежные вопросы