【问题标题】:Appengine Python Webapp2 API Logical StructureAppengine Python Webapp2 API 逻辑结构
【发布时间】:2013-08-22 08:26:24
【问题描述】:

不确定这是否有实际答案,但这里有。

我正在构建一个 webapp,在 appengine 上使用 webapp2,它只会向客户端公开 JSON API(基于浏览器的客户端的 shell HTML 模板除外)。

我现在拥有的是一个 main.py,它将传入的 URL 路由到处理程序。处理程序按功能分为模块(即 user_auth、user_info、组等...)。我有一个 models.py 模块,我的 ndb.Models 住在那里。

涉及Models的最底层代码包含在models.py中的Model子类中(即models.Group有一个名为create_group的类方法,由groups.AddGroupHandler.add_group调用,称为groups.AddGroupHandler.post.)

我还有一个 api.py 模块,其中包含所有 webapp 行为的类(即api.UserAuthapi.Signupapi.RegistrationVerification 等),其中包含为这些行为返回 JSON 的类方法(即api.UserAuth.session_expiredapi.RegistrationVerification.bad_token 等...)。

api.py 中的方法是从模型中的“低级”方法、处理程序模块中的“帮助程序”方法(即groups.AddGroupHandler.add_group 等...)以及处理程序方法本身(即groups.AddGroupHandler.post,等等……)。

这种结构是否会在未来引起问题,或者它现在还可以吗?此外,是否有任何已知适用于此类项目的标准结构?

编辑:我没有使用 REST 或类似的东西。

【问题讨论】:

  • 您熟悉模型视图控制器 (MVC) 设计模式吗?它通常非常有用。在您的特定情况下,您希望将“模型”与“控制器”分开,以便将来更容易维护。 “视图”本质上只是您的 JSON 序列化代码。
  • 如果您将 URL 映射到 API,则您使用的是 REST:en.wikipedia.org/wiki/Representational_state_transfer
  • @dragonx 谢谢。我模糊地意识到它,但我现在会更深入地研究它。
  • MVC 是一个非常好的建议。它有助于将数据库调用与 JSON 格式和“控制器”逻辑分开。如果您牢记对象之间的关系,您将拥有一个组织良好的结构。您已经有了 models.py 和 api.py(用于 JSON),只需为您的辅助(控制)方法添加模块。当代码变得庞大或难以理解时,定期重构。
  • 是的,你在正确的轨道上。您可以通过执行身份验证和为每个用户自定义视图来使视图更加智能。

标签: python google-app-engine python-2.7 project-management webapp2


【解决方案1】:

我强烈建议您研究 Google Cloud Endpoints,因为它允许您使用端点框架构建 API,然后 Google 提供客户端库供您使用,因此您不必推出自己的 iOS、Android , Javascript 等前端代码与您的服务层进行通信。

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

有一些学习曲线,但是一旦你完成它,它就会成为一个很好的功能。它还包括内置的 OAuth 2.0 支持等内容,否则如果您想在服务层上进行身份验证,则需要自行开发。

【讨论】:

  • 这似乎只适用于Java?我正在使用 Python。
  • Rats - 发送了错误的 URL :( 抱歉.. 这是 python 文档developers.google.com/appengine/docs/python/endpoints
  • 非常感谢!当我第一次阅读它时,我低估了它的用处,但这正是我所寻找的。​​span>
猜你喜欢
  • 2017-10-06
  • 2012-01-26
  • 2010-10-02
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
相关资源
最近更新 更多