文档章节

使用 RESTful 的方式开发 Web应用

哈库纳
 哈库纳
发布于 2016/10/02 11:44
字数 871
阅读 346
收藏 4
点赞 0
评论 0

    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) {
        //
    }
}

    

© 著作权归作者所有

共有 人打赏支持
哈库纳

哈库纳

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

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

chancein007 ⋅ 2014/06/02 ⋅ 0

使用 Spring 3 来创建 RESTful Web Services

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

IBMdW ⋅ 2011/05/25 ⋅ 2

Web 开发在 2015 年及未来的发展趋势

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

伯乐在线 ⋅ 2014/10/07 ⋅ 0

RESTful Web服务创建框架--Apache Wink

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

匿名 ⋅ 2009/09/08 ⋅ 0

Apache Wink 1.3.0 发布,结束孵化过程

Apache Wink 1.3.0 发布了,从此 Wink 结束孵化状态开始成为 Apache 的顶级项目。 Apache Wink是一个是使用简单,稳定的Java框架,用于创建RESTful web services应用程序。Wink包括了一个服务...

oschina ⋅ 2013/04/14 ⋅ 2

java面试:Web Services面试问题集锦

Q. 应用集成方式有哪些? A. 应用可以采用以下方式集成: 1. 共享数据库 2. 批量文件传输 3. 远程过程调用(RPC) 4. 通过消息中间件来交换异步信息(MOM) Q. 应用集成可以采用的Web服务方式...

BravoZu ⋅ 2014/02/23 ⋅ 0

Apache Wink 1.2.0-incubating 发布

Apache Wink 已经一年多了,还在孵化阶段,目前发布了 1.2.0 版本,完整的发布详情请下载后查看: http://incubator.apache.org/wink/downloads.html Apache Wink是一个是使用简单,稳定的Jav...

oschina ⋅ 2012/05/24 ⋅ 2

Hasor-Core v0.0.3 & Web v0.0.2 发布

首先引用Wiki的介绍一下Hasor: “Hasor是一款开源框架。它是为了解决企业模块化开发中复杂性而创建的。Hasor遵循简单的依赖、单一职责,在开发多模块企业项目中更加有调理。然而Hasor的用途...

哈库纳 ⋅ 2013/10/09 ⋅ 0

基于 Spring Boot 2.0 构建一个 RESTful WebService

REST 全称是 Representational State Transfer,中文意思是“表述性状态转移”。RESTful 是关于 Web 的现有特征和使用方式的一些准则和约束。 基于 Spring MVC 的 RestController,我们可以方...

摆码王子 ⋅ 04/17 ⋅ 0

Rest风格WEB服务(Rest Style Web Service)的真相

写这篇文章是目的不是介绍Web-Service, 而是从Restful Web Service说起来剖析一下 什么才是真正的Restful Style的架构与协议,从而更好的理解web服务的设计理念与架 构本质。 一:Web Servi...

mysky221 ⋅ 2014/10/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 45分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部