438 lines
56 KiB
HTML
438 lines
56 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-us">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Redkale(红菜苔)--基于Java 8全新的微服务开源框架 - Redkale官网</title>
|
||
<meta name="keywords" content="Redkale,redkale,java,微服务,架构"/>
|
||
<meta name="description" content="Redkale(红菜苔)是基于Java 8全新的微服务开源框架"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
|
||
</head>
|
||
<body>
|
||
<section class="page-header">
|
||
<a href="index.html" class="project-name">Redkale</a>
|
||
<h2 class="project-tagline"></h2>
|
||
<a href="redkale.html" class="btn">Redkale 入门</a>
|
||
<a href="convert.html" class="btn">Convert 组件</a>
|
||
<a href="service.html" class="btn">Service 组件</a>
|
||
<a href="source.html" class="btn">Source 组件</a>
|
||
<a href="net.html" class="btn">Net 组件</a>
|
||
<a href="watch.html" class="btn">Watch 组件</a>
|
||
<a href="plugins.html" class="btn">Redkale 插件</a>
|
||
<a href="articles.html" class="btn">技术文章</a>
|
||
</section>
|
||
|
||
<section class="main-content">
|
||
<h3><a class="anchor" aria-hidden="true"></a>REST插件介绍</h3>
|
||
<p>
|
||
<a href="https://github.com/redkale/redkale-plugins/tree/master/src/org/redkalex/rest" target="_blank">org.redkalex.rest</a> 是基于HTTP服务的REST插件,提供了很简单的REST服务接口方便开发。REST根据加载的Service组件自动生成对应的HttpServlet。其接口比Spring Boot之类的REST服务框架要简化得多,不需要进行注解配置也可以按REST服务加载。
|
||
</p>
|
||
|
||
<h3><a class="anchor" aria-hidden="true"></a>快速上手</h3>
|
||
<p>
|
||
为了让REST生效,必须配置 <a href="redkale.html#redkale_confxml" target="_blank">application.xml</a> 中 HTTP 的 <server> 节点的nodeInterceptor属性值为 <b>org.redkalex.rest.RestNodeInterceptor</b> 。<br>
|
||
同时必须在<server> 节点 里增加 <rest> 子节点。配置介绍如下:<br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="nt"><application</span> <span class="na">port=</span><span class="s">"5001"</span><span class="nt">></span>
|
||
|
||
<span class="nt"><resources></span>
|
||
<span class="c"><!-- ... --></span>
|
||
<span class="nt"></resources></span>
|
||
<span class="c"><!-- </span>
|
||
<span class="c"> nodeInterceptor: 值必须要是 <b>org.redkalex.rest.RestNodeInterceptor</b>,且只能配置在protocol="HTTP"的server节点上,REST服务才会生效。</span>
|
||
<span class="c"> --></span>
|
||
<span class="nt"><server</span> <span class="na">protocol=</span><span class="s">"HTTP"</span> <span class="na">port=</span><span class="s">"6060"</span> <span class="na">nodeInterceptor=</span><span class="s">"org.redkalex.rest.RestNodeInterceptor"</span><span class="nt">></span>
|
||
<span class="c"><!-- </span>
|
||
<span class="c"> REST的核心配置项</span>
|
||
<span class="c"> base: REST服务的BaseServlet,必须是 <b>org.redkalex.rest.RestHttpServlet</b> 的子类,该属性值没有默认值,必须指定。</span>
|
||
<span class="c"> autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象; </span>
|
||
<span class="c"> mustsign:默认值"false" 是否只加载标记为RestController的Service类,默认加载所有可用Service</span>
|
||
<span class="c"> includes:当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开</span>
|
||
<span class="c"> excludes:当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开</span>
|
||
<span class="c"> --></span>
|
||
<span class="nt"><rest</span> <span class="na">base=</span><span class="s">"org.redkalex.test.rest.SimpleRestServlet"</span> <span class="na">mustsign=</span><span class="s">"false"</span> <span class="na">autoload=</span><span class="s">"true"</span> <span class="na">includes=</span><span class="s">""</span> <span class="na">excludes=</span><span class="s">""</span><span class="nt">></span>
|
||
<span class="c"><!-- </span>
|
||
<span class="c"> value: Service类名,列出的表示必须被加载的Service对象, 且对象的Resource资源名称只能是""。</span>
|
||
<span class="c"> --></span>
|
||
<span class="nt"><service</span> <span class="na">value=</span><span class="s">"com.xxx.XXXXService"</span><span class="nt">/></span>
|
||
<span class="nt"></rest></span>
|
||
<span class="c"><!-- 其他配置... --></span>
|
||
<span class="nt"></server></span>
|
||
<span class="nt"></application></span>
|
||
</pre></div>
|
||
<p>
|
||
通常配置都需要编写一个 <b>org.redkalex.rest.RestHttpServlet</b> 子类,主要用于获取当前用户信息和鉴权,且必须指定具体的User对象类。开发者的实现类可以参考 <a href="https://github.com/redkale/redkale-demo/tree/master/src/org/redkale/demo/base" target="_blank">redkale-demo</a> 中的BaseServlet类,以下是一个简单的范例: <br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">SimpleRestServlet</span> <span class="kd">extends</span> <span class="n">RestHttpServlet</span><span class="o"><</span><span class="n">UserInfo</span><span class="o">></span> <span class="o">{</span>
|
||
|
||
<span class="kd">protected</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">RetResult</span> <span class="n">RET_UNLOGIN</span> <span class="o">=</span> <span class="n">RetCodes</span><span class="o">.</span><span class="na">retResult</span><span class="o">(</span><span class="n">RetCodes</span><span class="o">.</span><span class="na">RET_USER_UNLOGIN</span><span class="o">);</span>
|
||
|
||
<span class="kd">protected</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">RetResult</span> <span class="n">RET_AUTHILLEGAL</span> <span class="o">=</span> <span class="n">RetCodes</span><span class="o">.</span><span class="na">retResult</span><span class="o">(</span><span class="n">RetCodes</span><span class="o">.</span><span class="na">RET_USER_AUTH_ILLEGAL</span><span class="o">);</span>
|
||
|
||
<span class="nd">@Resource</span>
|
||
<span class="kd">private</span> <span class="n">UserService</span> <span class="n">userService</span><span class="o">;</span>
|
||
|
||
<span class="c1">//获取当前用户信息</span>
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">protected</span> <span class="n">UserInfo</span> <span class="nf">currentUser</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">String</span> <span class="n">sessionid</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getSessionid</span><span class="o">(</span><span class="kc">false</span><span class="o">);</span>
|
||
<span class="k">if</span> <span class="o">(</span><span class="n">sessionid</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">||</span> <span class="n">sessionid</span><span class="o">.</span><span class="na">isEmpty</span><span class="o">())</span> <span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
|
||
<span class="k">return</span> <span class="n">userService</span><span class="o">.</span><span class="na">current</span><span class="o">(</span><span class="n">sessionid</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//普通鉴权</span>
|
||
<span class="nd">@Override</span>
|
||
<span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">authenticate</span><span class="o">(</span><span class="kt">int</span> <span class="n">module</span><span class="o">,</span> <span class="kt">int</span> <span class="n">actionid</span><span class="o">,</span> <span class="n">HttpRequest</span> <span class="n">request</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">response</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">UserInfo</span> <span class="n">info</span> <span class="o">=</span> <span class="n">currentUser</span><span class="o">(</span><span class="n">request</span><span class="o">);</span>
|
||
<span class="k">if</span> <span class="o">(</span><span class="n">info</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
|
||
<span class="n">response</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">RET_UNLOGIN</span><span class="o">);</span>
|
||
<span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
|
||
<span class="o">}</span> <span class="k">else</span> <span class="nf">if</span> <span class="o">(!</span><span class="n">info</span><span class="o">.</span><span class="na">checkAuth</span><span class="o">(</span><span class="n">module</span><span class="o">,</span> <span class="n">actionid</span><span class="o">))</span> <span class="o">{</span>
|
||
<span class="n">response</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">RET_AUTHILLEGAL</span><span class="o">);</span>
|
||
<span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
|
||
<span class="o">}</span>
|
||
<span class="k">return</span> <span class="kc">true</span><span class="o">;</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
|
||
|
||
<p>
|
||
编写完 org.redkalex.rest.RestHttpServlet 子类后就需要对Service进行设置,设置需要三大注解:@RestController、@RestMapping、@RestParam。 <br>
|
||
<br>@RestController : <br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="cm">/**</span>
|
||
<span class="cm"> * 只能依附在Service类上,value默认为Service的类名去掉Service字样的字符串 (如HelloService,的默认路径为 hello)。</span>
|
||
<span class="cm"> */</span>
|
||
<span class="nd">@Target</span><span class="o">({</span><span class="n">TYPE</span><span class="o">})</span>
|
||
<span class="kd">public</span> <span class="nd">@interface</span> <span class="n">RestController</span> <span class="o">{</span>
|
||
|
||
<span class="kt">boolean</span> <span class="nf">ignore</span><span class="o">()</span> <span class="k">default</span> <span class="kc">false</span><span class="o">;</span> <span class="c1">//是否屏蔽该类的转换</span>
|
||
|
||
<span class="n">String</span> <span class="nf">value</span><span class="o">()</span> <span class="k">default</span> <span class="s">""</span><span class="o">;</span> <span class="c1">//模块名, 只能是模板名,不能含特殊字符</span>
|
||
|
||
<span class="kt">boolean</span> <span class="nf">repair</span><span class="o">()</span> <span class="k">default</span> <span class="kc">true</span><span class="o">;</span> <span class="c1">//同@WebServlet的repair属性</span>
|
||
|
||
<span class="kt">int</span> <span class="nf">module</span><span class="o">()</span> <span class="k">default</span> <span class="mi">0</span><span class="o">;</span> <span class="c1">//模块ID值,鉴权时用到</span>
|
||
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
<p>
|
||
<br>@RestMapping : <br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="cm">/**</span>
|
||
<span class="cm"> * 只能依附在Service实现类的public方法上</span>
|
||
<span class="cm"> * value默认为"/" + Service的类名去掉Service及后面字样的小写字符串 (如HelloService,的默认路径为/hello)。</span>
|
||
<span class="cm"> */</span>
|
||
<span class="nd">@Target</span><span class="o">({</span><span class="n">METHOD</span><span class="o">})</span>
|
||
<span class="kd">public</span> <span class="nd">@interface</span> <span class="n">RestMapping</span> <span class="o">{</span>
|
||
|
||
<span class="kt">boolean</span> <span class="nf">ignore</span><span class="o">()</span> <span class="k">default</span> <span class="kc">false</span><span class="o">;</span> <span class="c1">//是否屏蔽该方法的转换</span>
|
||
|
||
<span class="c1">//请求的方法名, 不能含特殊字符</span>
|
||
<span class="c1">//默认为方法名的小写(若方法名以createXXX、updateXXX、deleteXXX、queryXXX、findXXX且XXXService为Service的类名将只截取XXX之前)</span>
|
||
<span class="n">String</span> <span class="nf">name</span><span class="o">()</span> <span class="k">default</span> <span class="s">""</span><span class="o">;</span>
|
||
|
||
<span class="kt">boolean</span> <span class="nf">authignore</span><span class="o">()</span> <span class="k">default</span> <span class="kc">true</span><span class="o">;</span> <span class="c1">//是否跳过鉴权,默认跳过 </span>
|
||
|
||
<span class="kt">int</span> <span class="nf">actionid</span><span class="o">()</span> <span class="k">default</span> <span class="mi">0</span><span class="o">;</span> <span class="c1">//操作ID值,鉴权时用到</span>
|
||
|
||
<span class="n">String</span> <span class="nf">contentType</span><span class="o">()</span> <span class="k">default</span> <span class="s">""</span><span class="o">;</span> <span class="c1">//设置Response的ContentType 默认值为 text/plain; charset=utf-8</span>
|
||
|
||
<span class="n">String</span> <span class="nf">jsvar</span><span class="o">()</span> <span class="k">default</span> <span class="s">""</span><span class="o">;</span> <span class="c1">//以application/javascript输出对象是指明js的对象名,该值存在时则忽略contentType()的值</span>
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
|
||
<p>
|
||
<br>@RestParam : <br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="cm">/**</span>
|
||
<span class="cm"> * 只能依附在Service类的方法的参数上</span>
|
||
<span class="cm"> */</span>
|
||
<span class="nd">@Target</span><span class="o">({</span><span class="n">PARAMETER</span><span class="o">})</span>
|
||
<span class="kd">public</span> <span class="nd">@interface</span> <span class="n">RestParam</span> <span class="o">{</span>
|
||
|
||
<span class="n">String</span> <span class="nf">value</span><span class="o">();</span> <span class="c1">//参数名</span>
|
||
|
||
<span class="cm">/**</span>
|
||
<span class="cm"> * 参数是否从header取, 默认使用 request.getJsonParameter, 设置为true则使用 request.getJsonHeader 取值</span>
|
||
<span class="cm"> *</span>
|
||
<span class="cm"> * @return 是否从header取</span>
|
||
<span class="cm"> */</span>
|
||
<span class="kt">boolean</span> <span class="nf">header</span><span class="o">()</span> <span class="k">default</span> <span class="kc">false</span><span class="o">;</span>
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
|
||
<p>
|
||
REST的设置方式有两大种: 一种是采用默认REST注解,一种是显式的设置。 <br>
|
||
第一种方式需要开发者对Service中的方法命名需要遵循一定规则, 如下范例,模块为Hello,Service类命名为HelloService,增删改查的方法采用createHello、deleteHello、updateHello、queryHello或其他xxxHello命名。REST插件加载任何没有标记@RestController、@RestMapping、@RestParam 的Service将按照一定规则生成默认值:<br>
|
||
1、@RestController.value() 默认值为Service类名的小写化并去掉service及后面字样, 视为模块名 <br>
|
||
2、@RestMapping.name() 默认值为Service的方法名小写化并去掉模块名字样 <br>
|
||
3、@RestParam.value() 如果方法名以find、delete开头且方法的参数只有一个且参数类型是基本数据类型或String,则默认值为"#";若使用Java 8中带上 -parameters 编译项的新特性,默认值为参数名, 若没使用新特性则采用bean、bean2、bean3...的命名规则。<br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="cm">/**</span>
|
||
<span class="cm"> * 类说明:</span>
|
||
<span class="cm"> * Flipper : Source组件中的翻页对象, 只要Service方法中的参数类与该类相同,则不需要设定 @RestParam</span>
|
||
<span class="cm"> * UserInfo :当前用户类, 只要Service方法中的参数类与该类相同,则不需要设定 @RestParam</span>
|
||
<span class="cm"> * HelloEntity: Hello模块的实体类</span>
|
||
<span class="cm"> * HelloBean: Hellow模块实现FilterBean的过滤Bean类</span>
|
||
<span class="cm"> *</span>
|
||
<span class="cm"> */</span>
|
||
<span class="nd">@RestController</span><span class="o">(</span><span class="n">value</span> <span class="o">=</span> <span class="s">"hello"</span><span class="o">,</span> <span class="n">module</span> <span class="o">=</span> <span class="mi">0</span><span class="o">,</span> <span class="n">repair</span> <span class="o">=</span> <span class="kc">true</span><span class="o">,</span> <span class="n">ignore</span> <span class="o">=</span> <span class="kc">false</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">HelloService</span> <span class="kd">implements</span> <span class="n">Service</span> <span class="o">{</span>
|
||
|
||
<span class="nd">@Resource</span>
|
||
<span class="kd">private</span> <span class="n">DataSource</span> <span class="n">source</span><span class="o">;</span>
|
||
|
||
<span class="c1">//增加记录</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"create"</span><span class="o">,</span> <span class="n">authignore</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="n">RetResult</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="nf">createHello</span><span class="o">(</span><span class="n">UserInfo</span> <span class="n">info</span><span class="o">,</span> <span class="nd">@RestParam</span><span class="o">(</span><span class="s">"bean"</span><span class="o">)</span> <span class="n">HelloEntity</span> <span class="n">entity</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/create?bean={...} 增加对象</span>
|
||
<span class="n">entity</span><span class="o">.</span><span class="na">setCreator</span><span class="o">(</span><span class="n">info</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="n">info</span><span class="o">.</span><span class="na">getUserid</span><span class="o">());</span> <span class="c1">//设置当前用户ID</span>
|
||
<span class="n">entity</span><span class="o">.</span><span class="na">setCreatetime</span><span class="o">(</span><span class="n">System</span><span class="o">.</span><span class="na">currentTimeMillis</span><span class="o">());</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">insert</span><span class="o">(</span><span class="n">entity</span><span class="o">);</span>
|
||
<span class="k">return</span> <span class="k">new</span> <span class="n">RetResult</span><span class="o"><>(</span><span class="n">entity</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//删除记录</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"delete"</span><span class="o">,</span> <span class="n">authignore</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">deleteHello</span><span class="o">(</span><span class="nd">@RestParam</span><span class="o">(</span><span class="s">"#"</span><span class="o">)</span> <span class="kt">int</span> <span class="n">id</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/delete/1234 删除对象</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">delete</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">id</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//修改记录</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"update"</span><span class="o">,</span> <span class="n">authignore</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">updateHello</span><span class="o">(</span><span class="nd">@RestParam</span><span class="o">(</span><span class="s">"bean"</span><span class="o">)</span> <span class="n">HelloEntity</span> <span class="n">entity</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/update?bean={...} 修改对象</span>
|
||
<span class="n">entity</span><span class="o">.</span><span class="na">setUpdatetime</span><span class="o">(</span><span class="n">System</span><span class="o">.</span><span class="na">currentTimeMillis</span><span class="o">());</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">update</span><span class="o">(</span><span class="n">entity</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//查询列表</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"query"</span><span class="o">,</span> <span class="n">authignore</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="n">Sheet</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="nf">queryHello</span><span class="o">(</span><span class="nd">@RestParam</span><span class="o">(</span><span class="s">"bean"</span><span class="o">)</span> <span class="n">HelloBean</span> <span class="n">bean</span><span class="o">,</span> <span class="n">Flipper</span> <span class="n">flipper</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/query/offset:0/limit:20?bean={...} 查询列表</span>
|
||
<span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="na">querySheet</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">flipper</span><span class="o">,</span> <span class="n">bean</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//查询单个</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"find"</span><span class="o">,</span> <span class="n">authignore</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="n">HelloEntity</span> <span class="nf">findHello</span><span class="o">(</span><span class="nd">@RestParam</span><span class="o">(</span><span class="s">"#"</span><span class="o">)</span> <span class="kt">int</span> <span class="n">id</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/find/1234 查询对象</span>
|
||
<span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="na">find</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">id</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
<p>
|
||
根据默认命名规则可以看出,以上范例生成的RestServlet与去掉所有@RestController、@RestMapping、@RestParam后的Service生成的是完全相同的。 REST插件根据Service会动态生成HttpServlet,以上范例生成的HttpServlet如下:<br>
|
||
</p>
|
||
|
||
<div class="highlight"><pre><span class="nd">@WebServlet</span><span class="o">(</span><span class="n">value</span> <span class="o">=</span> <span class="o">{</span><span class="s">"/hello/*"</span><span class="o">},</span> <span class="n">repair</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">_DynHelloRestServlet</span> <span class="kd">extends</span> <span class="n">SimpleRestServlet</span> <span class="o">{</span>
|
||
|
||
<span class="nd">@Resource</span>
|
||
<span class="kd">private</span> <span class="n">HelloService</span> <span class="n">_service</span><span class="o">;</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/create"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">create</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">UserInfo</span> <span class="n">user</span> <span class="o">=</span> <span class="n">currentUser</span><span class="o">(</span><span class="n">req</span><span class="o">);</span>
|
||
<span class="n">RetResult</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="n">result</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">createHello</span><span class="o">(</span><span class="n">user</span><span class="o">,</span> <span class="n">bean</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">result</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/delete/"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">delete</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">req</span><span class="o">.</span><span class="na">getRequstURILastPath</span><span class="o">());</span>
|
||
<span class="n">_service</span><span class="o">.</span><span class="na">deleteHello</span><span class="o">(</span><span class="n">id</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">RetResult</span><span class="o">.</span><span class="na">success</span><span class="o">());</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/update"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">update</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">_service</span><span class="o">.</span><span class="na">updateHello</span><span class="o">(</span><span class="n">bean</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">RetResult</span><span class="o">.</span><span class="na">success</span><span class="o">());</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/query"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">query</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloBean</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloBean</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">Flipper</span> <span class="n">flipper</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getFlipper</span><span class="o">();</span>
|
||
<span class="n">Sheet</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="n">result</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">queryHello</span><span class="o">(</span><span class="n">bean</span><span class="o">,</span> <span class="n">flipper</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">result</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/find/"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">find</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">req</span><span class="o">.</span><span class="na">getRequstURILastPath</span><span class="o">());</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">findHello</span><span class="o">(</span><span class="n">id</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">bean</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
|
||
<p>
|
||
REST的第二种设置方式是显式的设置, 看如下范例:<br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="cm">/**</span>
|
||
<span class="cm"> * 类说明:</span>
|
||
<span class="cm"> * Flipper : Source组件中的翻页对象</span>
|
||
<span class="cm"> * UserInfo :当前用户类</span>
|
||
<span class="cm"> * HelloEntity: Hello模块的实体类</span>
|
||
<span class="cm"> * HelloBean: Hellow模块实现FilterBean的过滤Bean类</span>
|
||
<span class="cm"> *</span>
|
||
<span class="cm"> */</span>
|
||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">HelloService</span> <span class="kd">implements</span> <span class="n">Service</span> <span class="o">{</span>
|
||
|
||
<span class="nd">@Resource</span>
|
||
<span class="kd">private</span> <span class="n">DataSource</span> <span class="n">source</span><span class="o">;</span>
|
||
|
||
<span class="c1">//增加记录</span>
|
||
<span class="kd">public</span> <span class="n">RetResult</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="nf">createHello</span><span class="o">(</span><span class="n">UserInfo</span> <span class="n">info</span><span class="o">,</span> <span class="n">HelloEntity</span> <span class="n">entity</span><span class="o">)</span> <span class="o">{</span>
|
||
<span class="n">entity</span><span class="o">.</span><span class="na">setCreator</span><span class="o">(</span><span class="n">info</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="n">info</span><span class="o">.</span><span class="na">getUserid</span><span class="o">());</span> <span class="c1">//设置当前用户ID</span>
|
||
<span class="n">entity</span><span class="o">.</span><span class="na">setCreatetime</span><span class="o">(</span><span class="n">System</span><span class="o">.</span><span class="na">currentTimeMillis</span><span class="o">());</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">insert</span><span class="o">(</span><span class="n">entity</span><span class="o">);</span>
|
||
<span class="k">return</span> <span class="k">new</span> <span class="n">RetResult</span><span class="o"><>(</span><span class="n">entity</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//删除记录</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">deleteHello</span><span class="o">(</span><span class="kt">int</span> <span class="n">id</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/delete/1234 删除对象</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">delete</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">id</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//修改记录</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">updateHello</span><span class="o">(</span><span class="n">HelloEntity</span> <span class="n">entity</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/update?bean={...} 修改对象</span>
|
||
<span class="n">entity</span><span class="o">.</span><span class="na">setUpdatetime</span><span class="o">(</span><span class="n">System</span><span class="o">.</span><span class="na">currentTimeMillis</span><span class="o">());</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">update</span><span class="o">(</span><span class="n">entity</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//修改记录</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"partupdate"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">updateHello</span><span class="o">(</span><span class="n">HelloEntity</span> <span class="n">entity</span><span class="o">,</span> <span class="nd">@RestParam</span><span class="o">(</span><span class="s">"cols"</span><span class="o">)</span> <span class="n">String</span><span class="o">[]</span> <span class="n">columns</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/update?bean={...} 修改对象</span>
|
||
<span class="n">entity</span><span class="o">.</span><span class="na">setUpdatetime</span><span class="o">(</span><span class="n">System</span><span class="o">.</span><span class="na">currentTimeMillis</span><span class="o">());</span>
|
||
<span class="n">source</span><span class="o">.</span><span class="na">updateColumns</span><span class="o">(</span><span class="n">entity</span><span class="o">,</span> <span class="n">columns</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//查询Sheet列表</span>
|
||
<span class="kd">public</span> <span class="n">Sheet</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="nf">queryHello</span><span class="o">(</span><span class="n">HelloBean</span> <span class="n">bean</span><span class="o">,</span> <span class="n">Flipper</span> <span class="n">flipper</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/query/offset:0/limit:20?bean={...} 查询Sheet列表</span>
|
||
<span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="na">querySheet</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">flipper</span><span class="o">,</span> <span class="n">bean</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//查询List列表</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"list"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="n">List</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="nf">queryHello</span><span class="o">(</span><span class="n">HelloBean</span> <span class="n">bean</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/list?bean={...} 查询List列表</span>
|
||
<span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="na">queryList</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">bean</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="c1">//查询单个</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"find"</span><span class="o">)</span>
|
||
<span class="nd">@RestMapping</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">"jsfind"</span><span class="o">,</span> <span class="n">jsvar</span> <span class="o">=</span> <span class="s">"varhello"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="n">HelloEntity</span> <span class="nf">findHello</span><span class="o">(</span><span class="nd">@RestParam</span><span class="o">(</span><span class="s">"#"</span><span class="o">)</span> <span class="kt">int</span> <span class="n">id</span><span class="o">)</span> <span class="o">{</span> <span class="c1">//通过 /hello/find/1234 查询对象</span>
|
||
<span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="na">find</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">id</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
|
||
<p>
|
||
转换为RestHttpServlet如下:<br>
|
||
</p>
|
||
<div class="highlight"><pre><span class="nd">@WebServlet</span><span class="o">(</span><span class="n">value</span> <span class="o">=</span> <span class="o">{</span><span class="s">"/hello/*"</span><span class="o">},</span> <span class="n">repair</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">_DynHelloRestServlet</span> <span class="kd">extends</span> <span class="n">SimpleRestServlet</span> <span class="o">{</span>
|
||
|
||
<span class="nd">@Resource</span>
|
||
<span class="kd">private</span> <span class="n">HelloService</span> <span class="n">_service</span><span class="o">;</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/create"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">create</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">UserInfo</span> <span class="n">user</span> <span class="o">=</span> <span class="n">currentUser</span><span class="o">(</span><span class="n">req</span><span class="o">);</span>
|
||
<span class="n">RetResult</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="n">result</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">createHello</span><span class="o">(</span><span class="n">user</span><span class="o">,</span> <span class="n">bean</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">result</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/delete/"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">delete</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">req</span><span class="o">.</span><span class="na">getRequstURILastPath</span><span class="o">());</span>
|
||
<span class="n">_service</span><span class="o">.</span><span class="na">deleteHello</span><span class="o">(</span><span class="n">id</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">RetResult</span><span class="o">.</span><span class="na">success</span><span class="o">());</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/update"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">update</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">_service</span><span class="o">.</span><span class="na">updateHello</span><span class="o">(</span><span class="n">bean</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">RetResult</span><span class="o">.</span><span class="na">success</span><span class="o">());</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/partupdate"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">partupdate</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloEntity</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">String</span><span class="o">[]</span> <span class="n">cols</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">String</span><span class="o">[].</span><span class="na">class</span><span class="o">,</span> <span class="s">"cols"</span><span class="o">);</span>
|
||
<span class="n">_service</span><span class="o">.</span><span class="na">updateHello</span><span class="o">(</span><span class="n">bean</span><span class="o">,</span> <span class="n">cols</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">RetResult</span><span class="o">.</span><span class="na">success</span><span class="o">());</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/query"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">query</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloBean</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloBean</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">Flipper</span> <span class="n">flipper</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getFlipper</span><span class="o">();</span>
|
||
<span class="n">Sheet</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="n">result</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">queryHello</span><span class="o">(</span><span class="n">bean</span><span class="o">,</span> <span class="n">flipper</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">result</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/list"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">list</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="n">HelloBean</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="na">getJsonParameter</span><span class="o">(</span><span class="n">HelloBean</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"bean"</span><span class="o">);</span>
|
||
<span class="n">List</span><span class="o"><</span><span class="n">HelloEntity</span><span class="o">></span> <span class="n">result</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">queryHello</span><span class="o">(</span><span class="n">bean</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">result</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/find/"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">find</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">req</span><span class="o">.</span><span class="na">getRequstURILastPath</span><span class="o">());</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">findHello</span><span class="o">(</span><span class="n">id</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJson</span><span class="o">(</span><span class="n">bean</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
|
||
<span class="nd">@AuthIgnore</span>
|
||
<span class="nd">@WebAction</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/hello/jsfind/"</span><span class="o">)</span>
|
||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">jsfind</span><span class="o">(</span><span class="n">HttpRequest</span> <span class="n">req</span><span class="o">,</span> <span class="n">HttpResponse</span> <span class="n">resp</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
|
||
<span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">req</span><span class="o">.</span><span class="na">getRequstURILastPath</span><span class="o">());</span>
|
||
<span class="n">HelloEntity</span> <span class="n">bean</span> <span class="o">=</span> <span class="n">_service</span><span class="o">.</span><span class="na">findHello</span><span class="o">(</span><span class="n">id</span><span class="o">);</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="na">finishJsResult</span><span class="o">(</span><span class="s">"varhello"</span><span class="o">,</span> <span class="n">bean</span><span class="o">);</span>
|
||
<span class="o">}</span>
|
||
<span class="o">}</span>
|
||
</pre></div>
|
||
|
||
<p>
|
||
REST插件让开发者省去了编写HttpServlet过程,让开发更加敏捷。<br>
|
||
</p>
|
||
|
||
<footer class="site-footer">
|
||
<span class="site-footer-owner"> 欢迎加入Redkale QQ群: 527523235</span>
|
||
</footer>
|
||
|
||
</section>
|
||
|
||
<script>
|
||
var _hmt = _hmt || [];
|
||
(function () {
|
||
var hm = document.createElement("script");
|
||
hm.src = "//hm.baidu.com/hm.js?b4e05d7de8b5f3401dd93e3c6b35ffa5";
|
||
var s = document.getElementsByTagName("script")[0];
|
||
s.parentNode.insertBefore(hm, s);
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|