This commit is contained in:
@@ -191,7 +191,7 @@
|
||||
<span class="c1">//获取用户自己的信息</span>
|
||||
<span class="nd">@HttpMapping</span><span class="o">(</span><span class="n">url</span> <span class="o">=</span> <span class="s">"/user/myinfo"</span><span class="o">)</span>
|
||||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">mydetail</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">userid</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="na">getUserid</span><span class="o">();</span> <span class="c1">//获取当前用户ID</span>
|
||||
<span class="kt">int</span> <span class="n">userid</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">currentUser</span><span class="o">().</span><span class="na">getUserid</span><span class="o">();</span> <span class="c1">//获取当前用户ID</span>
|
||||
<span class="n">UserSimpleInfo</span> <span class="n">user</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="na">findUserInfo</span><span class="o">(</span><span class="n">userid</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">detailConvert</span><span class="o">,</span> <span class="n">user</span><span class="o">);</span> <span class="c1">// 包含用户的注册时间和注册地址字段信息</span>
|
||||
<span class="o">}</span>
|
||||
|
||||
7
net.html
7
net.html
@@ -89,7 +89,12 @@
|
||||
<span class="c1">//moduleid值来自 @WebServlet.moduleid()用于定义模块ID; actionid值自来@HttpMapping.actionid()用于定义操作ID; 需要系统化的鉴权需要定义这两个值</span>
|
||||
<span class="nd">@Override</span>
|
||||
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">authenticate</span><span class="o">(<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="n">UserInfo</span> <span class="n">info</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="na">currentUser</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">String</span> <span class="n">sessionid</span> <span class="o">=</span> <span class="n">request</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">info</span> <span class="o">=</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="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="n">request</span><span class="o">.</span><span class="na">currentUser</span><span class="o">(</span><span class="n">info</span><span class="o">);</span> <span class="c1">//必须赋值给request.currentUser</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">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="k">return</span><span class="o">;</span>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<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">interceptor=</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.RestServlet</b> 的子类,该属性值没有默认值,必须指定。</span>
|
||||
<span class="c"> base: REST服务的BaseServlet,必须是 <b>org.redkale.net.http.HttpServlet</b> 的子类,且子类必须标记@HttpUserType。</span>
|
||||
<span class="c"> autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象; </span>
|
||||
<span class="c"> mustsign:默认值"true" 是否只加载标记为RestController的Service类,默认加载所有可用Service</span>
|
||||
<span class="c"> includes:当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开</span>
|
||||
@@ -61,9 +61,9 @@
|
||||
<span class="nt"></application></span>
|
||||
</pre></div>
|
||||
<p>
|
||||
通常配置都需要编写一个 <b>org.redkalex.rest.RestServlet</b> 子类,主要用于获取当前用户信息和鉴权,且必须指定具体的User对象类。开发者的实现类可以参考 <a href="https://github.com/redkale/redkale-demo/tree/master/src/org/redkale/demo/base" target="_blank">redkale-demo</a> 中的BaseServlet类,以下是一个简单的范例: <br>
|
||||
通常配置都需要编写一个 <b>org.redkale.net.http.HttpServlet</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">RestServlet</span><span class="o"><</span><span class="n">UserInfo</span><span class="o">></span> <span class="o">{</span>
|
||||
<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">HttpServlet</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>
|
||||
|
||||
|
||||
@@ -633,13 +633,13 @@
|
||||
|
||||
<span class="c"><!-- </span>
|
||||
<span class="c"> REST的核心配置项, 存在[rest]节点则Server启动时会加载REST服务, 当Server为SNCP协议时,则SncpServer会变成REST的HttpServer, 节点可以多个</span>
|
||||
<span class="c"> base: REST服务的BaseServlet,必须是 org.redkale.net.http.RestServlet 的子类,该属性值默认值为 org.redkale.net.http.RestServlet。</span>
|
||||
<span class="c"> base: REST服务的BaseServlet,必须是org.redkale.net.http.HttpServlet的子类,且子类必须标记 <b>@HttpUserType</b>。</span>
|
||||
<span class="c"> autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象; </span>
|
||||
<span class="c"> mustsign:默认值"true" 是否只加载标记为RestService的Service类,默认只加载标记RestService且ignore=false的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.redkale.net.http.DefaultRestServlet"</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="nt"><rest</span> <span class="na">base=</span><span class="s">"org.redkale.net.http.HttpServlet"</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对象</span>
|
||||
<span class="c"> ignore: 是否忽略,设置为true则不会加载该Service对象,默认值为false</span>
|
||||
|
||||
31
service.html
31
service.html
@@ -290,7 +290,7 @@
|
||||
<p> 生成远程模式Service时发现参数带有@RpcCall注解的方法,在远程调用返回结果时会进行回调处理。</p>
|
||||
|
||||
<h3><a id="service_rest" class="anchor" href="#" aria-hidden="true"></a>Service REST</h3>
|
||||
<p> RestService提供类似Spring Boot的功能。开启REST功能的HTTP Server在实例化标记为@RestService的Service后自动生成对应的HttpServlet,免去开发人员编写HttpServlet的工作量。RestService生成的HttpServlet均是RestServlet的子类。主要通过<a href="/javadoc/org/redkale/net/http/RestService.html" target="_blank">@RestService</a>、<a href="/javadoc/org/redkale/net/http/RestMapping.html" target="_blank">@RestMapping</a>、<a href="/javadoc/org/redkale/net/http/RestParam.html" target="_blank">@RestParam</a>这三个注解来实现,同时为了获取其他类型的参数也有<a href="/javadoc/org/redkale/net/http/RestAddress.html" target="_blank">@RestAddress</a>、<a href="/javadoc/org/redkale/net/http/RestCookie.html" target="_blank">@RestCookie</a>、<a href="/javadoc/org/redkale/net/http/RestHeader.html" target="_blank">@RestHeader</a>、<a href="/javadoc/org/redkale/net/http/RestSessionid.html" target="_blank">@RestSessionid</a>、<a href="/javadoc/org/redkale/net/http/RestBody.html" target="_blank">@RestBody</a> 提供其扩展功能。<br/></p>
|
||||
<p> RestService提供类似Spring Boot的功能。开启REST功能的HTTP Server在实例化标记为@RestService的Service后自动生成对应的HttpServlet,免去开发人员编写HttpServlet的工作量。主要通过<a href="/javadoc/org/redkale/net/http/RestService.html" target="_blank">@RestService</a>、<a href="/javadoc/org/redkale/net/http/RestMapping.html" target="_blank">@RestMapping</a>、<a href="/javadoc/org/redkale/net/http/RestParam.html" target="_blank">@RestParam</a>这三个注解来实现,同时为了获取其他类型的参数也有<a href="/javadoc/org/redkale/net/http/RestAddress.html" target="_blank">@RestAddress</a>、<a href="/javadoc/org/redkale/net/http/RestCookie.html" target="_blank">@RestCookie</a>、<a href="/javadoc/org/redkale/net/http/RestHeader.html" target="_blank">@RestHeader</a>、<a href="/javadoc/org/redkale/net/http/RestSessionid.html" target="_blank">@RestSessionid</a>、<a href="/javadoc/org/redkale/net/http/RestBody.html" target="_blank">@RestBody</a> 提供其扩展功能。<br/></p>
|
||||
<p>
|
||||
@RestService : <br>
|
||||
</p>
|
||||
@@ -391,13 +391,13 @@
|
||||
<div class="highlight"><pre>
|
||||
<span class="c"><!-- </span>
|
||||
<span class="c"> REST的核心配置项, 存在[rest]节点则Server启动时会加载REST服务, 当Server为SNCP协议时,则SncpServer会变成REST的HttpServer, 节点可以多个</span>
|
||||
<span class="c"> base: REST服务的BaseServlet,必须是 org.redkale.net.http.RestServlet 的子类,该属性值默认值为 org.redkale.net.http.RestServlet。</span>
|
||||
<span class="c"> base: REST服务的BaseServlet,必须是org.redkale.net.http.HttpServlet的子类,且子类必须标记 <b>@HttpUserType</b>。</span>
|
||||
<span class="c"> autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象; </span>
|
||||
<span class="c"> mustsign:默认值"true" 是否只加载标记为RestService的Service类,默认只加载标记RestService且ignore=false的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.redkale.net.http.RestServlet"</span> <span class="na">mustsign=</span><span class="s">"true"</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="nt"><rest</span> <span class="na">base=</span><span class="s">"org.redkale.net.http.HttpServlet"</span> <span class="na">mustsign=</span><span class="s">"true"</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对象</span>
|
||||
<span class="c"> ignore: 是否忽略,设置为true则不会加载该Service对象,默认值为false</span>
|
||||
@@ -407,9 +407,10 @@
|
||||
</pre></div>
|
||||
<p> Redkale中的REST并非严格遵循标准的REST规范,在尽量满足规范的同时也考虑到开发的灵活性和简易性。以下通过简单的实例来说明其特性。<br/></p>
|
||||
<p>
|
||||
通常配置都需要编写一个 <b>org.redkale.net.http.RestServlet</b> 子类,主要用于获取当前用户信息和鉴权,且必须指定具体的User对象类。开发者的实现类可以参考 <a href="https://github.com/redkale/redkale-demo/tree/master/src/org/redkale/demo/base" target="_blank">redkale-demo</a> 中的BaseServlet类,以下是一个简单的范例: <br>
|
||||
通常配置都需要编写一个 <b>org.redkale.net.http.HttpServlet</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></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">SimpleRestServlet</span> <span class="kd">extends</span> <span class="n">RestServlet</span><span class="o"><</span><span class="n">UserInfo</span><span class="o">></span> <span class="o">{</span>
|
||||
<div class="highlight"><pre><span></span><span class="nd">@HttpUserType</span><span class="o">(</span><span class="n">UserInfo</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
|
||||
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">SimpleRestServlet</span> <span class="kd">extends</span> <span class="n">HttpServlet</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>
|
||||
|
||||
@@ -418,22 +419,20 @@
|
||||
<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">void</span> <span class="nf">authenticate</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="n">UserInfo</span> <span class="n">info</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="na">currentUser</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">String</span> <span class="n">sessionid</span> <span class="o">=</span> <span class="n">request</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">info</span> <span class="o">=</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="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="n">request</span><span class="o">.</span><span class="na">currentUser</span><span class="o">(</span><span class="n">info</span><span class="o">);</span> <span class="c1">//必须赋值给request.currentUser</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="o">;</span>
|
||||
<span class="o">}</span> <span class="k">else</span> <span class="k">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="o">}</span> <span class="k">else</span> <span class="k">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">request</span><span class="o">.</span><span class="na">getModuleid</span><span class="o">(),</span> <span class="n">request</span><span class="o">.</span><span class="na">getActionid</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="o">;</span>
|
||||
<span class="o">}</span>
|
||||
@@ -546,7 +545,7 @@
|
||||
</pre></div>
|
||||
|
||||
<p>
|
||||
根据默认命名规则可以看出,以上范例生成的RestServlet与去掉所有@RestService、@RestMapping、@RestParam后的Service生成的是完全相同的。 REST根据Service会动态生成HttpServlet,以上范例自动生成的HttpServlet如下:<br>
|
||||
根据默认命名规则可以看出,以上范例生成的HttpServlet与去掉所有@RestService、@RestMapping、@RestParam后的Service生成的是完全相同的。 REST根据Service会动态生成HttpServlet,以上范例自动生成的HttpServlet如下:<br>
|
||||
</p>
|
||||
|
||||
<div class="highlight"><pre><span></span><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>
|
||||
|
||||
Reference in New Issue
Block a user