代码之家  ›  专栏  ›  技术社区  ›  Alien13

Django-仅使用REST API连接项目应用程序

  •  0
  • Alien13  · 技术社区  · 7 年前

    我主要有两个问题。我没有在任何地方读到过这篇文章,但我想知道这样做是否是一个好主意,以便项目中所有应用程序进出的所有数据都完全依赖于REST API调用。

    例如,如果您想注册一个新用户。从前端收集数据,无需后端工作,只需将此数据作为REST调用发送给“注册应用程序”,即可完成所有验证和后端工作。

    我发现这种方法在大型团队中工作时非常有效,因为它使依赖关系更加解耦,并使项目的每个部分更加分离和“清晰”。因此,我的问题是,这是一种可行的发展方式吗?是否存在任何安全或性能问题?我在哪里可以读更多?

    谢谢

    马克斯

    1 回复  |  直到 7 年前
        1
  •  1
  •   the4thamigo_uk    7 年前

    这是完全可行的,我认为像大多数选择一样,它也有利弊。以下是其中一些:

    赞成的意见:

    • 去耦-客户端依赖于抽象(即REST API)而不是具体化(即网站),因此您可以获得设计的清晰性和在浏览器之外进行测试的能力,并且可以使用不同的实现(例如,出于开发/测试目的使用模拟服务)替代REST API。此外,如果REST API是由单独的后端服务实现的,那么您可以独立地对其进行更新,并可能独立地对其进行扩展。
    • 响应迅速的用户界面—REST请求可以避免HTML页面重新加载并改进用户体验。还可以进行异步REST调用。
    • 有效负载减少-通常REST调用返回的数据比页面刷新中发送的HTML少。

    欺骗:

    • 更复杂的客户端—您需要更复杂的javascript,尤其是在使用异步REST调用时。
    • 动态页面构建-通常,REST调用的结果可能需要在UI中进行一些更改,您必须在javascript中动态执行此操作,这也会增加复杂性。因此,您的UI逻辑被分割在HTML页面模板和javascript UI更新之间。这使得UI很难推理。
    • 超时-您需要在javascript中处理超时和错误
    • 会话-您需要一些验证用户和维护会话的方法。REST服务本身不应该维护客户机会话状态,因此您需要在客户机中存储状态,或者显式地将状态添加为具有自己独特URI的新REST资源。
    • 强制页面重新加载-如果使用此机制避免页面重新加载,则用户可能会在相当长的一段时间内打开页面,并且您可能需要某种机制使他们重新加载页面。