RESTful是火了好久的一種開發方式。這裏有一篇文章對於 RESTful 的定義介紹的還比較詳細:https://my.oschina.net/u/2369492/blog/656717。而本文就再也不這裏對於 RESTful 定義作過多介紹了。java
下面咱們來看一看使用 Hasor 該如何進行 RESTful 方式的開發。設計模式
Hasor 中進行 RESTful 的開發須要經過 Controller 來實現。有關 Controller 能夠參考下面這兩篇入門文章:restful
1.https://my.oschina.net/u/1166271/blog/753001《用 Hasor 談一談MVC設計模式》
2.https://my.oschina.net/u/1166271/blog/753718《接受 Request 請求並獲取請求參數》app
咱們以最簡單的 Controller 開始逐步深刻。下面這個就是最簡單的 Controller,咱們逐步深刻。 post
@MappingTo("/restful/index.htm") public class UserInfoAction { public void execute() { // } }
資源的表示:咱們以展示user信息爲例子,一個合規的 RESTful 方式描述用戶資源應該相似這樣:url
「/users/238693/info.htm」,其中「238693」是用戶ID。對於這個用戶的刪改查,操做要對應到 post、get、delete。新增用戶由於尚未生成ID因此咱們經過 post 請求「/users/add」來實現。spa
獲取用戶信息的請求應該是 get 方式訪問「/users/238693/info.htm」來提供.net
若是是修改那麼就把要修改的表單post方式遞交到「/users/238693/info.htm」設計
在開始以前咱們先把 User 的結構定義下來。rest
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) { // } }