91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring中REST和RESTful怎么實現

發布時間:2022-04-07 15:47:54 來源:億速云 閱讀:189 作者:iii 欄目:開發技術

今天小編給大家分享一下spring中REST和RESTful怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

簡介

REST概念:

REST :全稱:Representational State Transfer,意思:表現層資源狀態轉移

詳細解釋可分為三部分:

資源

資源是一種看待服務器的方式,即,將服務器看作是由很多離散的資源組成。每個資源是服務器上一個可命名的抽象概念。因為資源是一個抽象的概念,所以它不僅僅能代表服務器文件系統中的一個文件、數據庫中的一張表等等具體的東西,可以將資源設計的要多抽象有多抽象,只要想象力允許而且客戶端應用開發者能夠理解。與面向對象設計類似,資源是以名詞為核心來組織的,首先關注的是名詞。一個資源可以由一個或多個URI來標識。URI既是資源的名稱,也是資源在Web上的地址。對某個資源感興趣的客戶端應用,可以通過資源的URI與其進行交互。

資源的表述

資源的表述是一段對于資源在某個特定時刻的狀態的描述。可以在客戶端-服務器端之間轉移(交換)。資源的表述可以有多種格式,例如HTML/XML/JSON/純文本/圖片/視頻/音頻等等。資源的表述格式可以通過協商機制來確定。請求-響應方向的表述通常使用不同的格式。

狀態轉移

狀態轉移說的是:在客戶端和服務器端之間轉移(transfer)代表資源狀態的表述。通過轉移和操作資源的表述,來間接實現操作資源的目的。

REST很好地利用了HTTP本身就有的一些特征,如HTTP動詞、HTTP狀態碼、HTTP報頭等等

REST架構的主要原則:

  • 對網絡上所有的資源都有一個資源標志符;

  • 對資源的操作不會改變標識符;

  • 同一資源有多種表現形式(xml、json);

  • 所有操作都是無狀態的(Stateless);

  • 符合上述REST原則的架構方式稱為RESTful;

RESTful概念:

RESTful是一種常見的REST應用,是遵循REST風格的web服務,REST式的(rest與restful相比,多了一個ful,就英語層面來說是一個形容詞,restful翻譯為中文為: “rest式的”)web服務是一種ROA(面向資源的架構)

REST和RESTful的聯系與區別:restful是由rest派生出來的。

RESTful實現

具體說,就是http協議里面,四個表示操作方式的動詞:get,post,put,delete,它們分別對應四種基本操作:get用來獲取資源,post用來新建資源,put用來更新資源,delete用來刪除資源

REST 風格提倡URL地址使用統一的風格設計,從前到后各個單詞使用斜杠分開,不適用問號鍵值對方式攜帶請求參數,而是將要發送給服務器的數據作為URL地址的一部分,以保證整體風格的一致性。

GET, 查詢所有用戶信息

    /**
    * 使用RESTFul模擬用戶資源的增刪改查
    * /user    GET     查詢所有用戶信息
    */
    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String getAllUser(){
        System.out.println("查詢所有用戶信息");
        return "success";
    }
<a th:href="@{/user}" rel="external nofollow" >查詢所有用戶信息</a><br>

GET, 根據用戶ID查詢用戶信息

    /**
    * 使用RESTFul模擬用戶資源的增刪改查
    * /user     GET     根據用戶id查詢用戶信息
    */
    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    public String getUserById(){
        System.out.println("根據id查詢用戶信息");
        return "success";
    }
<a th:href="@{/user/1}" rel="external nofollow" >根據id查詢用戶信息</a><br>

POST, 添加用戶信息

    /**
    * 使用RESTFul模擬用戶資源的增刪改查
    * /user     POST     添加用戶信息
    */
    @RequestMapping(value = "/user", method = RequestMethod.POST)
    public String insertUser(String username, String password){
        System.out.println("添加用戶信息:"+username+","+password);
        return "success";
    }
<form th:action="@{/user}" method="post">
    用戶名:<input type="text" name="username"><br>
    密碼:<input type="password" name="password"><br>
    <input type="submit" value="添加"><br>
</form>

PUT, 修改用戶信息

    /**
    * 使用RESTFul模擬用戶資源的增刪改查
    * /user     PUT     修改用戶信息
    */
    @RequestMapping(value = "/user", method = RequestMethod.PUT)
    public String updateUser(String username, String password){
        System.out.println("修改用戶信息:"+username+","+password);
        return "success";
    }
<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" value="修改"><br>
</form>

注意:

由于瀏覽器只支持發送get和post方式的請求,那么該如何發送put和delete請求呢?

SpringMVC 提供了 HiddenHttpMethodFilter 幫助我們將 POST 請求轉換為 DELETE 或 PUT 請求

HiddenHttpMethodFilter 處理put和delete請求的條件: a>當前請求的請求方式必須為post , b>當前請求必須傳輸請求參數_method 滿足以上條件,HiddenHttpMethodFilter 過濾器就會將當前請求的請求方式轉換為請求參數_method的值,因此請求參數_method的值才是最終的請求方式

配置HiddenHttpMethodFilter,在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>

注:

目前為止,SpringMVC中提供了兩個過濾器:CharacterEncodingFilter(編碼過濾器)和HiddenHttpMethodFilter(請求方式過濾器),在web.xml中注冊時,必須先注冊CharacterEncodingFilter,再注冊HiddenHttpMethodFilter。原因:

在 CharacterEncodingFilter 中通過 request.setCharacterEncoding(encoding) 方法設置字符集的request.setCharacterEncoding(encoding) 方法要求前面不能有任何獲取請求參數的操作,而 HiddenHttpMethodFilter 恰恰有一個獲取請求方式的操作:

String paramValue = request.getParameter(this.methodParam);

以上就是“spring中REST和RESTful怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

民权县| 车险| 澎湖县| 明光市| 桓仁| 华蓥市| 商水县| 烟台市| 泰顺县| 赤峰市| 南部县| 南平市| 武乡县| 重庆市| 浮梁县| 蓬溪县| 桃园县| 盐城市| 寻乌县| 肥西县| 黄平县| 内江市| 江达县| 汶川县| 泾川县| 甘孜| 渭源县| 什邡市| 蓝山县| 荣成市| 金华市| 白银市| 溆浦县| 合肥市| 丹凤县| 德化县| 乌什县| 延吉市| 收藏| 沅陵县| 黔西县|