【问题标题】:Using REST API as server side for web page application使用 REST API 作为网页应用程序的服务器端
【发布时间】:2014-12-15 18:26:07
【问题描述】:

我们有内部构建的 Web 应用程序(服务器端公开从客户端 JS 调用的 Web 服务)。 我们还需要在 REST API 中公开我们的代码功能。

我想知道 - 我是否也应该开始将 REST API 也用于我内部构建的 Web 应用程序?

最初,REST 架构风格声明 REST 是无状态的 (http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3)。这导致消费者\客户端将状态保持在客户端。 它适用于为保存状态而构建的“富”客户端(移动应用程序等)。但是......对于Web应用程序是否相同? 让服务器端在 REST API 中暴露自己,而客户端直接调用这些 REST API 是不是很好?

我看到了一些优点和一些缺点。

优点:

  • 统一接口 - 我们的服务器端仅以一种方式 (REST) 公开其 API,用于 Web 应用程序和通用 API
  • 易于公开我们在内部使用的服务以供外部用户使用。

缺点:

  • 如上所述 - 浏览器不是为了在客户端保存缓存而构建的。
  • 如果我可以使用状态 - 为什么不呢?它提高了性能(更少的来回),并简化了开发。
  • 一旦我们将内部 API 公开给客户,就会限制我们对更改非常小心。

有什么提示\推荐吗?

【问题讨论】:

    标签: web-services api rest


    【解决方案1】:

    这是一种极其常见且功能强大的架构,尤其是在与 AngularJS 或 EmberJS 等重型前端客户端结合使用时。这种情况下的状态保存在客户端上,并且仅将完成他们正在进行的任何交互(API 调用)所需的内容传递给服务器。根据我的经验,它非常干净且可扩展。

    您需要弄清楚/处理的几件事。登录和“会话”信息。通常,会话内容不会在 REST 服务上完成,因此您必须以各种方式解决这一问题。登录通常是通过从服务器获取令牌(例如 JavaScript Web 令牌)然后将其传递给进一步的请求来完成的。您最终自己处理到期。

    【讨论】:

      【解决方案2】:

      为所有应用程序使用单个 REST 服务器将使您能够重用服务器。 关于会话,在 Kaltura 中,我们使用 login 返回一个加密字符串,其中包含用户 ID、会话类型(管理员/用户)和会话到期时间,一旦客户端收到该会话字符串,它将用于任何未来的 API 调用。 这种架构使我们能够保存有关该会话字符串的其他信息,而无需在服务器上保留它的副本。

      有关更多 API REST 服务器指南,请参阅我的博客:http://restafar.com/create-new-rest-server/

      【讨论】:

        猜你喜欢
        • 2014-05-29
        • 2016-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-27
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多