最近一直在看一些关于rest架构的东西,但看来看去还是对一些细节的概念较为模糊。而且网上或论坛博客都没有一个资深的开发人员用过的文章,只是一些简单的增删改的小demo,始终达不到想要的效果。根据我的经验,在一个大的项目里面是很难只用rest架构就能完成。它更适合中小的项目,而且模块之间依赖性很小的那种。因为毕竟不是所有的东西都能被抽象为资源。大家可以参考一下这篇文章http://blog.csdn.net/maoxiang/article/details/4551434这篇文章中的例子完全可一放在项目中作参考使用。他只是把servlet做了简单的封装,很容易理解,感觉没多少技术含量。但你要永远记清一点,rest是一种架构的风格,不是新技术!
这是一个service的写法:
package com.xx.xx.service;
import net.sf.json.JSONObject;
import com.bayss.ms.common.script.ScriptOperator;
import com.bayss.ms.common.utils.PropertiesUtil;
import com.bayss.rest.IRestRequest;
import com.bayss.rest.IRestResponse;
import com.bayss.rest.IRestService;
import com.bayss.rest.RestException;
public class BusinessDataService implements IRestService {
public void service(IRestRequest request, IRestResponse response)throws RestException {
String args = "";
String[] value = request.getHttpRequest().getParameterValues("func");
for(int j = 0;j<value.length;j++){}
String str = value[0];
String[] s = str.split(",");
JSONObject jsonData = new JSONObject();
for (int i = 0; i < s.length; i++) {
String func ="";
args= jsonData.put(s[i], func).toString();
}
//返回请求值
response.writeResponse(args);
}
}
大概就是从url里面取到请求的参数,然后service做处理返回给客户端。
然后在WEB-INF下面添加一个rest.xml,这个xml由RestConfig.java来处理:
<?xml version="1.0" encoding="UTF-8"?>
<rest-config>
<services>
<!-- business -->
<service class="com.xx.xx.service.BusinessDataService">/business/data</service>
</services>
<interceptors>
<interceptor class="com.xx.xx.interceptor.LogInterceptor"></interceptor>
</interceptors>
</rest-config>
添加的url就在<services></services>里面配置,访问的时候就是:localhost:8080/项目名称/business/data
然后就是web.xml的配置:
<!-- rest framework -->
<servlet>
<servlet-name>RestServlet</servlet-name>
<servlet-class>com.xx.rest.support.ServletRestDispatcher</servlet-class>
<init-param>
<param-name>restConfig</param-name>
<param-value>/WEB-INF/rest.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
就这么简单。不过大家在用的时候还是要在看一遍我开头写的内容!