文档章节

使用 RESTful 的方式开发 Web应用

哈库纳
 哈库纳
发布于 2016/10/02 11:44
字数 871
阅读 350
收藏 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) {
        //
    }
}

    

© 著作权归作者所有

共有 人打赏支持
哈库纳

哈库纳

粉丝 964
博文 84
码字总数 151810
作品 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
RESTful API 编写指南

本文首载于 Gevin的博客 基于一些不错的RESTful开发组件,可以快速的开发出不错的RESTful API,但如果不了解开发规范的、健壮的RESTful API的基本面,即便优秀的RESTful开发组件摆在面前,也...

Gevin
2016/06/06
0
0
WebServiceCXF与Restful架构风格简介

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

稻香今天更新文章了吗
07/01
0
0
RESTful Web服务创建框架--Apache Wink

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

匿名
2009/09/08
6.9K
0

没有更多内容

加载失败,请刷新页面

加载更多

&和&&,==和equals的区别

&和&& 相同点:都可以表示逻辑与(and),当运算符两边的结果都为true时,结果才为true,只要有一边为false,结果就为false。 不同点:&&还有短路的作用,即如果第一个表达式的结果为false,就...

森林之下
9分钟前
0
0
我和 Spring 大神的一天

摘要: 先介绍一下故事的5位主人公。 Josh Long 龙之春:Spring 技术布道师,撰写过5部著作,录制过3部畅销的培训视频,是一位开源软件贡献者。 Spencer Gibb:Spring 技术布道师,Spring Cl...

阿里云官方博客
12分钟前
0
0
【Zookeeper】源码分析目录(保存)

https://www.cnblogs.com/leesf456/p/6518040.html

Java搬砖工程师
15分钟前
0
0
vue-cli图片路径使用

https://www.cnblogs.com/minigrasshopper/p/8011630.html

LM_Mike
16分钟前
0
0
前方高能,重要通知!明珠不蒙尘,有才你就来。

11月开源众包服务之星计划--开发商招募正式开启了! 您还是否在为能接更多的订单而操碎了心? 开源众包即将迎来三周年华诞,重磅上线服务之星品牌计划。你有强大的技术实力?你有丰富的案例经...

开源中国众包平台
18分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部