文档章节

使用 RESTful 的方式开发 Web应用

哈库纳
 哈库纳
发布于 2016/10/02 11:44
字数 871
阅读 348
收藏 4

    RESTful是火了很久的一种开发方式。这里有一篇文章对于 RESTful 的定义介绍的还比较详细:https://my.oschina.net/u/2369492/blog/656717。而本文就不再这里对于 RESTful 定义做过多介绍了。

    下面我们来看一看使用 Hasor 该如何进行 RESTful 方式的开发。

    Hasor 中进行 RESTful 的开发需要通过 Controller 来实现。有关 Controller 可以参考下面这两篇入门文章:

    1.https://my.oschina.net/u/1166271/blog/753001《用 Hasor 谈一谈MVC设计模式》
    2.https://my.oschina.net/u/1166271/blog/753718《接受 Request 请求并获取请求参数》

    我们以最简单的 Controller 开始逐步深入。下面这个就是最简单的 Controller,我们逐步深入。 

@MappingTo("/restful/index.htm")
public class UserInfoAction {
    public void execute() {
        //
    }
}

    资源的表示:我们以展现user信息为例子,一个合规的 RESTful 方式描述用户资源应该类似这样:

    “/users/238693/info.htm”,其中“238693”是用户ID。对于这个用户的删改查,操作要对应到 post、get、delete。新增用户因为还没有生成ID所以我们通过 post 请求“/users/add”来实现。

    获取用户信息的请求应该是 get 方式访问“/users/238693/info.htm”来提供

    如果是修改那么就把要修改的表单post方式递交到“/users/238693/info.htm”

    在开始之前我们先把 User 的结构定义下来。

public class UserDO {
    private long   id;
    private String email;
    private String account;
    private String password;
    private Date   createTime;
    private Date   modifyTime;
    ...
}

    接着我们定义 User 的 FormBean。

public class UserForm {
    @ReqParam("email")
    private String email;
    @ReqParam("account")
    private String account;
    @ReqParam("password")
    private String password;
}

 

新增用户

    我们新建 Users Controller,这个 Controller 我们让它只能接受 post 请求。

@MappingTo("/restful/users")
public class Users {
    @Post
    public void execute(@Params() UserForm userForm) {
        //
    }
}

    我们看到这次我们使用了 @Post 注解,这个类的意思是。我们的这个 Users 类是一个 Controller 并且负责接受来自 “/restful/users”的请求。同时这个请求必须是 http post请求。请求参数通过 userForm 参数封装的 FormBean 传递进来。

获取用户信息

    表示用户信息的URL有一些特殊“/users/238693/info.htm”在这个字符串里数字部分是用户ID,它是可变的。我们需要把 url 中的某一段文本设定为请求参数。那么只需要像下面这样映射 UserID

@MappingTo("/restful/{userID}/info.htm")
public class UserInfo {
    public void execute() {
        //
    }
}

    接下来我们通过 @PathParam 注解来获取 URL 中被标记为参数的数据。同时这一次我们标记 Controller 的方法只负责处理 http 的 get 请求

@MappingTo("/restful/{userID}/info.htm")
public class UserInfo {
    @Get
    public void execute(@PathParam("userID") long userID, RenderData renderData) {
        //
    }
}

    剩下的就是把数据写入到 Response了,或者交给模版渲染出来。

 

修改&删除用户信息

    修改操作因为和查询操作都是表示的同一个资源,因此我们使用现有的 Controller 来完成接收请求。这里要额外说明一下 execute 是 Controller 的默认接受请求的处理方法。接受处理请求的方法可以是任意一个。现在我们把修改用户信息的方法也加进来。因为修改是 post 递交因此使用 @Post 注解。

    顺便为了阅读方便我们把展现用户信息的方法名也换一换

@MappingTo("/restful/{userID}/info.htm")
public class UserInfo {
    @Get
    public void info(@PathParam("userID") long userID, RenderData renderData) {
        //
    }
    @Post
    public void update(@PathParam("userID") long userID, @Params() UserForm userForm, RenderData renderData) {
        //
    }
    @Delete
    public void delete(@PathParam("userID") long userID, RenderData renderData) {
        //
    }
}

    

© 著作权归作者所有

共有 人打赏支持
哈库纳

哈库纳

粉丝 959
博文 83
码字总数 149741
作品 4
杭州
后端工程师
如何用Google APIs和Google的应用系统进行集成(1)----Google APIs简单介绍

Google的应用系统提供了很多的应用,比如 Google广告,Google 任务,Google 日历,Google blogger,Google Plus,Google 地图等等非常的多的应用,请见下图, 下图中列出的只是Google APIs中...

chancein007
2014/06/02
0
0
使用 Spring 3 来创建 RESTful Web Services

在 Java™ 中,您可以使用以下几种方法来创建 RESTful Web Service:使用 JSR 311(311)及其参考实现 Jersey、使用 Restlet 框架和从头开始开发。Spring 是流行的 Java EE 应用开发框架,现...

IBMdW
2011/05/25
1K
2
WebServiceCXF与Restful架构风格简介

什么是WebService 简单的说,WebService是一种多系统之间通信的技术. WebService是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、...

稻香今天更新文章了吗
07/01
0
0
Web 开发在 2015 年及未来的发展趋势

本文由伯乐在线 -Mxt 翻译。未经许可,禁止转载! 英文出处:shijuvar。欢迎加入翻译组。 本文中,我们将一同看看当今 Web 开发的发展趋势,给大家分享我对 2015 年及未来的一些看法、观察和...

伯乐在线
2014/10/07
0
0
RESTful Web服务创建框架--Apache Wink

Apache Wink是一个是使用简单,稳定的Java框架,用于创建RESTful web services应用程序。Wink包括了一个服务器端模块和一个客户端模块,用于帮助开发者快速高效的开发RESTful Web services应...

匿名
2009/09/08
6.9K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

golang使用protobuf简易教程

参考文档:https://blog.csdn.net/qq_15437667/article/details/78425151 一、安装protobuf # 去github.com/golang/protobuf下载源码包,# 拷贝到 $GOPATH/src/github.com/golang/protobuf......

科陆李明
23分钟前
0
0
8月16日 上课截图

小丑鱼00
39分钟前
0
0
Nginx负载均衡、配置SSL

Nginx负载均衡 在 /usr/local/nginx/conf/vhost/ 下创建一个文件,写入以下内容 加载后用curl测试可以访问设置的网站 www.qq.com ssl原理 HTTPS是一种加密的http协议,如果HTTP通信的数据包在...

黄昏残影
42分钟前
0
0
String 源码阅读笔记

String源码阅读 本人学习笔记,内容来自于阅读源码和其他博客,水平有限,如有错误,烦请指正。 详情参考: Java 7 源码学习系列(一)——String 请别再拿“String s = new String("xyz");...

等到烟火清凉_
43分钟前
4
0
Coding and Paper Letter(十二)

资源整理。<!-- more --> 1 Coding: 1.R语言生成的ppt,GeoStat2018会议报告,时空模式分析的报告。 geostat18 2.欧空局哨兵和SMOS的工具集,关于对地观测数据的处理与分析的docker容器。 ...

胖胖雕
44分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部