使用 RESTful 的方式开发 Web应用
使用 RESTful 的方式开发 Web应用
哈库纳 发表于1年前
使用 RESTful 的方式开发 Web应用
  • 发表于 1年前
  • 阅读 329
  • 收藏 4
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

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

    

标签: Restful Hasor web
共有 人打赏支持
哈库纳
粉丝 928
博文 81
码字总数 149803
作品 4
×
哈库纳
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: