rapid-rest使用说明

阅读更多

 

 

一.服务端

WEB-INF/rpc-servlet.xml



   

  
  

WEB-INF/web.xml


    rpc
    org.springframework.web.servlet.DispatcherServlet
    1



    rpc
    /rpc/*

 

二.客户端

 


  
  
  

客户端使用

com.duowan.common.rpc.fortestinvoker.UserWebService userWebService = (UserWebService )applicationContext.getBean('userWebService');

 

三.maven依赖

 



        com.duowan.common
        duowan-common-rpc
        2.0.0




        org.codehaus.jackson
        jackson-core-asl
        1.9.2


        org.codehaus.jackson
        jackson-mapper-asl
        1.9.2


        org.codehaus.jackson
        jackson-jaxrs
        1.9.2




        commons-io
        commons-io
        1.4


        commons-logging
        commons-logging
        1.1.1


        commons-lang
        commons-lang
        2.5


        commons-httpclient
        commons-httpclient
        3.1

 

四.测试

比如有下面一个服务端方法

public interface BlogInfoService {
        Blog findSingleBlog(String group,String blogId);
        public BlogQuery returnBlogQuery(BlogQuery query);
}

public class BlogQuery {
        private String username;
        private String password;
        private int age;
        // ... property get and set method
}

那么可以采用如下 URL进行访问测试:

1. http://localhost:8080/rpc/BlogInfoService/findSingleBlog?__params=group;blogId
2. http://localhost:8080/rpc/BlogInfoService/findSingleBlog?group=2222&blogId=4444

对象参数传递:
1. http://localhost:8080/services/BlogInfoService/returnBlogQuery?username=1&password=100

 

五.返回结果控制

通过URL参数: format=json|js来控制

 

1.返回Json(默认)

请求

http://localhost:6060/services/BlogInfoService/findDate?__format=json

返回

{"result":199999999,"errno":null,"error":null}

 

2.返回Jsonp(用于解决JavaScript跨域)

请求

http://localhost:6060/services/BlogInfoService/findDate?__format=jsonp&__jsoncallback=findDateCallback

返回

findDateCallback({"result":199999999,"errno":null,"error":null})

实际调用



  





JQuery Jsonp应用: Jquery应用JSONP

 

其它特性

 

1.客户端exception处理

如果服务端抛出 com.duowan.common.rpc.WebServiceException,则客户端可以try catch这个异常,服务端的任何异常都会转换为这个WebServiceException

切换行号显示
   1 public class WebServiceException extends RuntimeException {     
   2         /** 未知错误  as HTTP 500 */
   3         public static String UNKNOW_ERROR = "UNKNOW_ERROR";     
   4         /** 非法参数  as HTTP SC_BAD_REQUEST:400  */
   5         public static String ILLEGAL_ARGUMENT = "ILLEGAL_ARGUMENT";
   6         /**
   7          * 错误码
   8          */
   9         private String errorNo;
  10 
  11 }

 

2.服务端得到Request,Response

通过 RPCContext.getRequest(),RPCContext.getResponse()得到HttpServletRequest,HttpServletResponse

 

3.客户端网络连接出错重试

 


  
  
  
  
  

 

4.客户端Timeout(超时)配置

 

        
                
                
                
                
        
        
        
                
                
                
        

 

5.直接返回结果,不增加包装类

通过URL增加参数 &__noWrapResult=true,来指明直接返回结果,

{resultObject}

而不返回

{result: {resultObject} }

 

6.设置使用其它传输协议: json,java,hessian

默认的传输协议是: json,还可以使用其它传输协议

        
                
                
        
        
        
                
                
                
        

 

7.开启http gzip压缩

 

可以通过nginx压缩现在的http返回结果,客户端跟服务端都不需要作任何修改。

你可能感兴趣的:(rapid-rest使用说明)