REST Web应用,ZF框架 Rest CS服务实现
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- Modified,If-None-Match/ETag实现带条件的 GET请求。
图3. REST 与缓存服务器 (Cache Server)
REST 的应用可以充分地挖掘HTTP协议对缓存支持的能力。当客户端第一次发送 HTTP GET请求给服务器获得内容后,该内容可能被缓存服务器 (Cache Server)缓存。当下一次客户端请求同样的资源时,缓存可以直接给出响应,而不需要请求远程的服务器获得。而这一切对客户端来说都是透明的。下面修改服务器Zend_Rest代码实现一个简单的Cache设置。
- 应用框架的设计与实现——.NET平台(7.事件通知服务.委托.异步编程)
- android 多媒体框架服务之StagefrightPlayer和OMXCodec实现原理学习
- 4.RPC框架的简单实现(服务发布-ServiceBean实现)
- 使用Spring来实现任务计划服务三:集成quartz任务调度框架
- 远程服务调用框架设计与实现
- ZF框架实现发送邮件的方法
- Laravel框架中实现使用阿里云ACE缓存服务
- 如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计
- Java远程调用(二)实现一个简单的服务框架
- [置顶] 基于netty实现的远程服务框架
- Dubbo+zookeeper实现分布式服务框架
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
- 简单的服务调用框架实现
- 远程服务调用框架设计与实现
- 自定义RPC通讯框架,实现dubbo远程RPC服务治理功能
- Dubbo+zookeeper实现分布式服务框架
- 服务框架学习(一):消息队列的原理与实现
- 应用框架的设计与实现学习手札之类工厂服务——反射
- 基于Consul+Registrator+Nginx实现容器服务自动发现的集群框架 推荐
- 远程服务调用框架设计与实现