【问题标题】:Refactoring Web App code when API gets added later稍后添加 API 时重构 Web 应用程序代码
【发布时间】:2017-02-21 01:33:22
【问题描述】:

我有一个 Web 应用程序,我们现在正在为其添加 API。

我正在寻找在处理此问题时要牢记的最佳做法。

我正在考虑这些因素:

  • DRY:避免冗余(尽可能)。 以处理表单提交的部分代码为例。 有些部分仅适用于 Web 表单提交,但与等效的 API Post 调用无关。我正在考虑模块化这个 Post 处理程序背后的公共代码。我必须补充一点,Web 表单和 API 的处理程序类是不同的。我正在创建具有通用方法的第三类。这第三个类将由两个处理程序类继承(连同它们的其他基类,多重继承)。

  • 我是否应该重构代码,以便 Web 表单“发布”处理程序方法依次调用 API 发布方法?

谢谢。

【问题讨论】:

    标签: python google-app-engine webapp2 gae-python27


    【解决方案1】:

    我认为具体情况会因具体情况而异,但我最近做了类似的事情,我会分享我的想法。

    这是我组织我的处理程序的方式,所以我不会重复自己:

    class MyHandler(webapp2.RequestHandler)
        class ApiHandler(MyHandler):
            class Ajax(ApiHandler): # Ajax calls on my website
            class V0(ApiHandler): # V0 of my REST API for third parties
        class WebHandler(MyHandler):
            class HomePage(WebHandler):
            class OtherPage(WebHandler):
    

    我添加了很多可供子类使用的实用方法。例如,MyHandler 有一个 write_json 方法,因为它在很多地方都使用过,ApiHandler 有一个 process_json 方法,因为它只被 API 使用。

    我认为通过让一个 post 方法调用另一个 post 方法来避免重复自己是一个坏主意。相反,我认为在模型级别进行重构会使您的代码更简洁。

    【讨论】:

    • 谢谢杰夫。您是否将 webapp2 用于 API 处理程序?您没有使用 Endpoints 吗?
    • 我使用了 webapp2。我想我看了一下端点,但是使用 webapp2 很容易做到,我不想花时间学习新东西。我认为端点更适合那些还没有应用引擎应用的人(但我可能错了)。
    猜你喜欢
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多