Rop开发手册(6):最简单的服务开放平台框架
Rop相关资源:
1.github:https://github.com/itstamen/rop
2.群组:http://rop.group.iteye.com/
目录
1.快速了解Rop
2.请求服务模型
3.应用授权及验证
4.服务会话管理
5.错误处理模型
6.响应报文控制
7.文件上传
8.服务安全控制
9.拦截器及事件体系
10.性能调优
11.开发客户端SDK
12.参考资料
分体式报文模型
服务开放平台对服务的处理结果统一由响应报文告之调用终端,不管服务处理正确与否,都必须对应一个响应报文。如果响应报文既要包含正确的业务响应报文,又要包括错误的响应报文,将增加服务响应报文格式的复杂度。由于Rop已经建立了一个可以描述所有类型错误的错误模型,因此错误响应报文的格式是统一的。业务服务的结果响应报文是业务相关的,也就是说,每个业务服务方法的正确业务响应报文是不一样的。
基于以上的分析,Rop将正确业务响应报文和错误处理响应报文独立开来,这样服务平台的开发者仅需设计正确的业务响应报文即可,错误响应报文直接由Rop提供。如果服务正确执行,返回正确的业务响应报文,否则返回Rop格式的错误响应报文。
响应报文定义
Rop的服务方法可以返回任何类型的对象,通过JSR 222注解进行对象流化定义。只要定义好响应类,并正确标注JSR 222注解,业务响应报文也就定义好了。
代码清单CreateUserResponse .java:服务响应的返回对象
package com.rop.sample.response;import javax.xml.bind.annotation.*;@XmlAccessorType(XmlAccessType.FIELD) ①@XmlRootElement(name = "createUserResponse")public class CreateUserResponse{ @XmlAttribute ② private String userId; @XmlAttribute private String createTime; @XmlElement private Foo foo = new Foo(); @XmlElement private String feedback;…}
<?xml version="1.0" encoding="utf-8" standalone="yes"?><createUserResponse createTime="20120101010101" userId="1"> <foo field2="2" field1="1"/> <feedback>hello</feedback></createUserResponse>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><error code="33"> <message>Invalid Arguments</message> <solution>check the Required application parameter is valid(refer the subError message)</solution> <subErrors> <subError code="isv.parameters-mismatch:salary-and-yyy"> <message>incoming parameter salary and aaa does not match, both have a certain correspondence between</message> </subError> </subErrors></error>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><error code="33"> <message>非法的参数</message> <solution>请查看根据服务接口对参数格式的要求</solution> <subErrors> <subError code="isv.parameters-mismatch:salary-and-yyy"> <message>传入的参数salary和aaa不匹配,两者有一定的对应关系</message> </subError> </subErrors></error>