REST - RESTFUL風格是什麼以及Java中怎麼使用

什麼是 RESTFUL 風格?

REST(英文:Representational State Transfer,簡稱REST)描述了一個架構樣式的網絡系統,指的是一組架構約束條件和原則,滿足這些約束條件和原則的應用程序或設計就是 RESTful。REST並沒有一個明確的標準,而更像是一種設計的風格。
Representational(表述性) : REST 資源實際上可以用各種形式來進行表述,包括 XML、JSON 甚至 HTML——最適合資源使用者的任意形式。
State(狀態):當使用 REST 的時候,我們更關注資源的狀態而不是對資源採取的行爲。
Transfer(轉義)*:REST 涉及到轉移資源數據,它以某種表述性形式從一個應用轉移到另一個應用。

RESTFUL特點

1、每一個URI代表1種資源;
2、客戶端使用GET、POST、PUT、DELETE4個表示操作方式的動詞對服務端資源進行操作:GET用來獲取資源,POST用來新建資源(也可以用於更新資源),PUT用來更新資源,DELETE用來刪除資源;
3、通過操作資源的表現形式來操作資源;
4、資源的表現形式是XML或者HTML;
5、客戶端與服務端之間的交互在請求之間是無狀態的,從客戶端到服務端的每個請求都必須包含理解請求所必需的信息。

CRUD動作 HTTP方法
add(新增) POST
update(修改) PUT
delete(刪除) DELETE
get(查詢) GET

一般來說,我們平常都是用的是GET和POST請求,實際上還有很多其他請求方式。在RESTFUL風格里一般就是用上訴這四種對應的關係,但是也不是約定死了的。POST同樣也可以用來做查詢請求,當我們做某些查詢時,希望帶的條件是不要暴露出來時。POST也可以用來做修改操作。

RESTFUL在Java中怎麼使用

一、傳統與REST

方法 傳統風格URL REST風格URL
查詢(GET) /getAllStudent /sutdent
新增(POST) /addStudent?name=關羽 /student
修改(PUT) /updateStudent?id=1&&name=張飛 /student
刪除(DELETE) /deleteStudent?id=1 /student/1

二、Java(Spring)中使用示例

1、創建Student類

使用lombok生成get/set/構造方法

@Data
@AllArgsConstructor
public class Student {
    private Long id;
    private String name;
    private String sex;
}
2、創建Controller類

RESTFUL風格的增刪改查。

@RestController
@RequestMapping("/api/v1")
public class TestController {

    /**
     * 查詢所有Student
     */
    @GetMapping("/student")
    public List<Student> getStudents(){
        List<Student> students = new ArrayList<>();
        students.add(new Student(1L,"曹操","男"));
        students.add(new Student(2L,"劉備","男"));
        students.add(new Student(3L,"孫權","男"));
        students.add(new Student(4L,"小喬","女"));
        return students;
    }

    /**
     * 分頁查詢Student
     * @param page 當前頁
     * @param pageSize 一頁多少條數據
     */
    @GetMapping("/student/{page}/{pageSize}")
    public List<Student> getStudents(@PathVariable Integer page,@PathVariable Integer pageSize){
        List<Student> students = new ArrayList<>();
        students.add(new Student(1L,"第" + page + "頁","男"));
        students.add(new Student(2L,"一頁查" + pageSize + "條數據","男"));
        return students;
    }

    /**
     * 新增Student
     * @param student 要新增的Student
     */
    @PostMapping("/student")
    public Student addStudent(@RequestBody Student student){
        return student;
    }

    /**
     * 修改Student
     * @param student 要修改的Student
     */
    @PutMapping("/student")
    public Student updateStudent(@RequestBody Student student){
        return new Student(student.getId(),"修改","男");
    }

    /**
     * 刪除Student
     * @param id 要刪除Student的id
     */
    @DeleteMapping("/student/{id}")
    public Student deleteStudent(@PathVariable Long id){
        return new Student(id,"刪除","女");
    }
}
3、使用POST查看結果

1、查詢全部
在這裏插入圖片描述
2、分頁查詢
在這裏插入圖片描述
3、修改
在這裏插入圖片描述
4、新增
在這裏插入圖片描述
5、刪除
在這裏插入圖片描述
我以前理解的REST風格就是使用GET\POST\DELETE\PUT請求就行了,即在Java中使用對應的@RequestMapping即可,後來才發現,RESTFUL風格在URL地址上就和傳統不一樣。
本文具體參考:使用RESTful風格開發Java Web
原文講的很好,更詳細,本文只是大概演示了一下用法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章