REST Web应用,ZF框架 Rest CS服务实现

来源:互联网 发布:下载软件的软件哪个好 编辑:程序博客网 时间:2024/06/16 16:34
一、REST 简介
       REST 架构风格是一种全新的针对 Web 应用的开发风格,与 RPC 风格的 Web 服务一样,是企业信息化的一个重要架构实践领域。REST(Representational State Transfer)是 Roy Fielding 提出的一个描述互联系统架构风格的名词。

二、应用场景介绍

      需求描述
       这是一个在线的用户管理模块,负责用户信息的创建,修改,删除,查询。用户的信息主要包括:
       1.用户名(唯一标志在系统中的用户)
       2.头衔
       3.公司
       4.EMAIL
       5.描述
        图1. 需求用例图


                   

       如图1 所示,客户端1(Client1)与客户端2(Client2)对于信息的存取具有不同的权限,客户端1 可以执行所有的操作,而客户端2 只被允许执行用户查询(Query User) 与用户列表查询(Query User List)。所以做服务安全控制非常重要。

三、使用 REST 实现 Web 服务

     基于 Zend_Rest框架来实现该应用。Zend_Rest 为那些要采用 REST 结构体系来构建应用程序的 PHP开发者提供了一个具体的解决方案。

服务器端实现

客户器端实现

      安全控制

       所有从客户端 Client2 发出的 HTTP 请求都经过代理服务器 (Proxy Server)。代理服务器制定安全策略:所有经过该代理的访问 User 和 User List 资源的请求只具有读取权限,即:允许 GET/HEAD 操作,而像具有写权限的 PUT/DELTE 是不被允许的。


     图2. REST 与代理服务器 (Proxy Servers)



       一般代理服务器的实现根据 (URI, HTTP Method)两元组来决定 HTTP请求的安全合法性。当发现类似于(http://open.xxx.com/rest/userinfo/{username}DELETE)这样的请求时,予以拒绝。

关于缓存设置

      对于基于网络的分布式应用,网络传输是一个影响应用性能的重要因素。如何使用缓存来节省网络传输带来的开销,这是每一个构建分布式网络应用的开发人员必须考虑的问题。

       HTTP 协议带条件的 HTTPGET请求 (Conditional GET)被设计用来节省客户端与服务器之间网络传输带来的开销,这也给客户端实现 Cache机制 (包括在客户端与服务器之间的任何代理 )提供了可能。HTTP协议通过 HTTPHEADER域:If-Modified-Since/Last- ModifiedIf-None-Match/ETag实现带条件的 GET请求。


图3. REST 与缓存服务器 (Cache Server)


        REST 的应用可以充分地挖掘HTTP协议对缓存支持的能力。当客户端第一次发送 HTTP GET请求给服务器获得内容后,该内容可能被缓存服务器 (Cache Server)缓存。当下一次客户端请求同样的资源时,缓存可以直接给出响应,而不需要请求远程的服务器获得。而这一切对客户端来说都是透明的。下面修改服务器Zend_Rest代码实现一个简单的Cache设置。




1 0
原创粉丝点击