RESTFUL風格的URL請求及引數接收

海綿baby 發表於 2020-08-01

  RESTFUL是一種網路應用程式的設計風格和開發方式,基於HTTP,可以使用XML格式定義或JSON格式定義。RESTFUL適用於移動網際網路廠商作為業務使能介面的場景,實現第三方OTT呼叫行動網路資源的功能,動作型別為新增、變更、刪除所呼叫資源。---百度百科

  以前使用最多的請求方式還是post,post一時爽一直post一直爽,直到我接觸了restful風格API,嗯真香!我就簡單展示一下我怎麼使用的,太深刻的理論原理我們也不懂我們也不敢講! 

  REST,即Representational State Transfer的縮寫(表述性狀態傳遞)。 表述性狀態轉移是一組架構約束條件和原則。滿足這些約束條件和原則的應用程式或設計就是RESTful。需要注意的是,REST是設計風格而不是標準。REST通常基於使用HTTP,URI,和XML(標準通用標記語言下的一個子集)以及HTML(標準通用標記語言下的一個應用)這些現有的廣泛流行的協議和標準。

  URI,統一資源識別符號(Uniform Resource Identifier,URI)是一個用於標識某一網際網路資源名稱的字串。 該種標識允許使用者對任何(包括本地和網際網路)的資源通過特定的協議進行互動操作。URI由包括確定語法和相關協議的方案所定義。

  URL,統一資源定位系統(uniform resource locator;URL)是因特網的全球資訊網服務程式上用於指定資訊位置的表示方法。


請求路徑      請求方法      作用
/user/1 HTTP   GET       查詢id為1的user
/user/1 HTTP   DELETE      刪除id為1的user
/user/1 HTTP   PUT       編輯id為1的user
/user HTTP      POST       新增user

新增和修改一般是使用@RequestBody獲取整個body

    @PostMapping(value = "/user")
    public Message insert(@RequestBody User user) {
        try {
            userService.insert(user);
            return Message.ok();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return Message.fail();
        }
    }
    
    @PutMapping(value = "/user")
    public Message update(@RequestBody User user) {
        try {
            userService.update(user);
            return Message.ok();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return Message.fail();
        }
    }

當需要從請求路徑中獲取引數的時候就只能使用@PathVariable註解,刪除的時候一般只需要傳id,通過url帶參就可以了

 @DeleteMapping(value = "/user/{id}")
    public Message logicalDeletionById(@PathVariable(name = "id") String id) {
        try {
            userService.logicalDeletionById(id);
            return Message.ok();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return Message.fail();
        }
    }

如果需要多條件查詢就用物件傳查詢條件,下次講SpringBoot+Jpa多條件查詢+分頁+排序

    @GetMapping(value = "/user")
    public Message findAll() {
        try {
            return new MessageBox<>(userService.findAll());
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return Message.fail();
        }
    }

 如果有什麼疑問歡迎留言,當然我也不一定懂!一起學習一起進步,群876083754