<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
REST 是一種軟體架構風格。
REST:Representational State Transfer,表現層資源狀態轉移。
對此,有幾個名字需要理解一下:
表現層:實際上就是前端的頁面到後端的控制層。
資源:當應用部署到伺服器上之後,萬物皆資源,比如一個類、一個html頁面等等。
資源的表述:是一段對於資源在某個特定時刻的狀態的描述。
狀態轉移:在使用者端和伺服器端之間轉移(transfer)代表資源狀態的表述。通過轉移和操作資源的表述,來間接實現操作資源的目的。
具體說,就是 HTTP 協定裡面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。
它們分別對應四種基本操作:
REST 風格提倡 URL 地址使用統一的風格設計,從前到後各個單詞使用斜槓分開。
不使用問號鍵值對方式攜帶請求引數,而是將要傳送給伺服器的資料作為 URL 地址的一部分,以保證整體風格的一致性。比如:
使用 RESTFul 模擬一下使用者資源的增刪改查。
控制器方法:
@Controller public class UserController { /** * /user GET 查詢所有使用者資訊 * /user/1 GET 根據使用者 id 查詢使用者資訊 * /user POST 新增使用者資訊 * /user/1 DELETE 刪除使用者資訊 * /user PUT 更新使用者資訊 */ @RequestMapping(value = "/user", method = RequestMethod.GET) public String getAllUser() { System.out.println("查詢所有使用者資訊"); return "success"; } @RequestMapping(value = "/user/{id}", method = RequestMethod.GET) public String getUserById() { System.out.println("根據使用者 id 查詢使用者資訊"); return "success"; } @RequestMapping(value = "/user", method = RequestMethod.POST) public String addUser(String username, String password) { System.out.println("新增使用者資訊:" + username + "," + password); return "success"; } }
test_rest.html:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>test_rest 頁面</p> <a th:href="@{/user}" rel="external nofollow" >查詢所有使用者資訊</a><br> <a th:href="@{/user/1}" rel="external nofollow" >根據使用者 id 查詢使用者資訊</a><br> <form th:action="@{/user}" method="post"> 使用者名稱:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" name="新增使用者"><br> </form> </body> </html>
組態檔裡,加上檢視控制:
<mvc:view-controller path="/testRest" view-name="test_rest"></mvc:view-controller>
這樣就可以通過http://localhost:8080/springmvc/testRest存取到test_rest.html的頁面了。
點選測試一下。
由於瀏覽器只支援傳送 get 和 post 方式的請求,那麼該如何傳送 put 和 delete 請求呢?
答案:使用 HiddenHttpMethodFilter 過濾器,可以幫助我們將 POST 請求轉換為 DELETE 或 PUT 請求。
在web.xml中註冊HiddenHttpMethodFilter,這個過濾器要設定在編碼過濾器之後,防止更新操作獲取到的引數是亂碼:
<filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
注意使用的前提條件有 2 個:
那麼前端頁面裡修改的表單應該是成這樣:
<p>修改使用者資訊的表單</p> <form th:action="@{/user}" method="post"> <input type="hidden" name="_method" value="put"> 使用者名稱:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" name="修改"><br> </form>
注意這裡name="_method" value="put",value 的值才是真正的方法名。
提交測試一下:
感謝《尚矽谷》的學習資源。
以上就是SpringMVC RESTFul及REST架構風格介紹的詳細內容,更多關於SpringMVC RESTFul架構風格的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45