使用REST API作为网页应用程序的服务器端

时间:2014-12-15 18:26:07

标签: web-services api rest

我们有内部构建的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),Web应用程序和一般用途API公开它的API
  • 易于公开我们内部使用的服务供外部用户使用。

缺点:

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

任何提示\建议?

2 个答案:

答案 0 :(得分:0)

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

你需要弄清楚/处理的几件事。登录& “会话”信息。通常,会话内容无法在REST服务上完成,因此您必须以各种方式对此进行说明。登录通常通过从服务器获取令牌(例如,JavaScript Web令牌)然后在进一步的请求上传递令牌来完成。您最终会自行处理到期日期。

答案 1 :(得分:0)

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

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