Web services 使用RESTAPI作为web页面应用程序的服务器端

Web services 使用RESTAPI作为web页面应用程序的服务器端,web-services,api,rest,Web Services,Api,Rest,我们有内部构建的web应用程序(服务器端公开从客户端JS调用的web服务)。 我们还需要在RESTAPI中公开我们的代码功能 我想知道——我是否也应该开始为我内部构建的web应用程序使用RESTAPI 最初,REST体系结构样式声明REST是无状态的()。这将导致消费者\客户端将状态保留在客户端。 它适用于“富”客户机(移动应用程序等),这些客户机是为了保存自身的状态而构建的。但是web应用程序也是这样吗? 让服务器端在RESTAPI中公开自己,而客户端直接调用这些RESTAPI,这样好吗 我看

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

我想知道——我是否也应该开始为我内部构建的web应用程序使用RESTAPI

最初,REST体系结构样式声明REST是无状态的()。这将导致消费者\客户端将状态保留在客户端。 它适用于“富”客户机(移动应用程序等),这些客户机是为了保存自身的状态而构建的。但是web应用程序也是这样吗? 让服务器端在RESTAPI中公开自己,而客户端直接调用这些RESTAPI,这样好吗

我看到了一些优点,也看到了一些缺点

优点:

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

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

有什么提示/建议吗?

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


有几件事你需要弄清楚/处理。登录和“会话”信息。一般来说,会话内容不能在REST服务上完成,因此您必须以各种方式对此进行说明。登录通常通过从服务器获取令牌(例如JavaScript Web令牌)并在进一步请求时传递该令牌来完成。你最终只能自己处理过期问题

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

有关API REST服务器指南的更多信息,请参阅我的博客: