国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Restful風格筆記

這篇具有很好參考價值的文章主要介紹了Restful風格筆記。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Restful風格知識點

@RestController注解

在類上添加@RestController可以默認類中的所有方法都帶有@ResponseBody注解,可以省去一個個添加的麻煩。

@RestController
@RequestMapping("/restful")
//@CrossOrigin(origins = {"http://localhost:8080","http://www.imooc.com"})
//@CrossOrigin(origins = "*",maxAge = 3600)
public class RestfulController {
    @GetMapping("/request")
    //@ResponseBody
    public String doGetRequest(){
        return "{\"message\":\"返回查詢結(jié)果\"}";
    }

    // POST /article/1
    // POST /restful/request/100
    @PostMapping("/request/{rid}")
    //@ResponseBody
    public String doPostRequest(@PathVariable("rid") Integer requestId, Person person){
        System.out.println(person.getName() + ":" + person.getAge());
        return "{\"message\":\"數(shù)據(jù)新建成功\",\"id\":" + requestId + "}";
    }

    @PutMapping("/request")
    //@ResponseBody
    public String doPutRequest(Person person){
        System.out.println(person.getName() + ":" + person.getAge());
        return "{\"message\":\"數(shù)據(jù)更新成功\"}";
    }

    @DeleteMapping("/request")
    //@ResponseBody
    public String doDeleteRequest(){
        return "{\"message\":\"數(shù)據(jù)刪除成功\"}";
    }

    @GetMapping("/person")
    public Person findByPersonId(Integer id){
        Person p = new Person();
        if(id==1){
            p.setName("lily");
            p.setAge(23);
        }else if(id==2){
            p.setName("smith");
            p.setAge(22);
        }
        return p;
    }

    @GetMapping("/persons")
    public List<Person> findPersons(){
        List list = new ArrayList();
        Person p1 = new Person();
        p1.setName("lily");
        p1.setAge(23);
        p1.setBirthday(new Date());

        Person p2 = new Person();
        p2.setName("smith");
        p2.setAge(22);
        p2.setBirthday(new Date());
        list.add(p1);
        list.add(p2);
        return list;
    }

}

路徑變量

@PathVariable注解可以讓控制方法接收前端傳來的請求中的路徑變量。例如下面這個例子,無論前端傳來1還是100這個id都能被控制方法中的requestId這個變量通過@PathVariable注解來接收從而在控制方法中使用。

	// POST /restful/request/1
    // POST /restful/request/100
    @PostMapping("/request/{rid}")
    //@ResponseBody
    public String doPostRequest(@PathVariable("rid") Integer requestId, Person person){
        System.out.println(person.getName() + ":" + person.getAge());
        return "{\"message\":\"數(shù)據(jù)新建成功\",\"id\":" + requestId + "}";
    }

簡單請求與非簡單請求

簡單請求是指標準結(jié)構(gòu)的HTTP請求對應(yīng)GET/POST請求
非簡單請求是復(fù)雜要求的HTTP請求指PUT/DELETE、擴展標準請求
兩者最大區(qū)別是非簡單請求發(fā)送前需要發(fā)送預(yù)檢請求
SpringMVC默認只支持get、post請求,要處理非簡單請求需要在web.xml中配置過濾器。

<filter>
        <filter-name>formContentFilter</filter-name>
        <filter-class>org.springframework.web.filter.FormContentFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>formContentFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

JSON序列化

首先在項目中添加依賴。

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.9</version>
        </dependency>

然后在控制方法中返回實體對象即可,如果有多個實體需要返回,則可以使用List。

@GetMapping("/person")
    public Person findByPersonId(Integer id){
        Person p = new Person();
        if(id==1){
            p.setName("lily");
            p.setAge(23);
        }else if(id==2){
            p.setName("smith");
            p.setAge(22);
        }
        return p;
    }

    @GetMapping("/persons")
    public List<Person> findPersons(){
        List list = new ArrayList();
        Person p1 = new Person();
        p1.setName("lily");
        p1.setAge(23);
        p1.setBirthday(new Date());

        Person p2 = new Person();
        p2.setName("smith");
        p2.setAge(22);
        p2.setBirthday(new Date());
        list.add(p1);
        list.add(p2);
        return list;
    }

如果實體類中包含了日期變量,則需要使用特殊的注解進行格式轉(zhuǎn)變。

public class Person {
    private String name;
    private Integer age;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
    private Date birthday;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

瀏覽器的跨域訪問

同源策略:
同源策略阻止從一個域加載的腳本去獲取另一個域上的資源
只要協(xié)議、域名、端口有任何一個不同,都被當作是不同的域
瀏覽器Console看到Access-Control-Allow-Origin就代表跨域了
例子:
Restful風格筆記
允許跨域的標簽:

<img>- 顯示遠程圖片
<script>- 加載遠程JS
<link> - 加載遠程CSS

請求頭中的Sec-Fetch-Mode:cors說明這是一個跨域訪問的請求。
響應(yīng)頭中的Vary: Origin,Access-Control-Request-Method, Access-Control-Request-Headers通知瀏覽器這是一個允許跨域訪問的url。

在控制類之前添加注解解決跨域訪問問題。
使用@CrossOrigin注解添加允許訪問的url。
maxAge參數(shù)設(shè)置緩存預(yù)檢請求結(jié)果的時間。

@CrossOrigin(origins = {"http://localhost:8080","http://www.imooc.com"},maxAge = 3600)

在配置文件中添加配置解決跨域訪問問題。
在applicationContext.xml中添加mvc:cors設(shè)置允許訪問的url。

<mvc:cors>
        <mvc:mapping path="/restful/**"
                     allowed-origins="http://localhost:8080,http://www.imooc.com"
                     max-age="3600"/>
    </mvc:cors>

path代表允許訪問哪個路徑下的資源。
注:注解和配置一起使用時,以注解配置為準。文章來源地址http://www.zghlxwxcb.cn/news/detail-495294.html

到了這里,關(guān)于Restful風格筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JAVA知識點筆記—— 開源框架篇

    1、MyBatis 的優(yōu)點? 1、基于 SQL 語句編程,相當靈活,不會對應(yīng)用程序或者數(shù)據(jù)庫的現(xiàn)有設(shè)計造成任何影響, SQL 寫在 XML 里,解除 sql 與程序代碼的耦合,便于統(tǒng)一管理;提供 XML 標簽,支持編寫動態(tài) SQL 語句,并可重用。 2、與 JDBC 相比,減少了 50%以上的代碼量,消除了 JDB

    2024年02月07日
    瀏覽(20)
  • Java筆記(細碎小知識點)1

    1.Dos命令:dir:打出當前目錄結(jié)構(gòu);md:創(chuàng)建文件夾;cd+文件夾地址:跳轉(zhuǎn)到當前目錄下的對應(yīng)文件夾;cd..:跳轉(zhuǎn)到上一目錄;rd+文件夾:刪除文件夾中東西;del+文件(或 “*.文件” 類型這樣的正則表達式):刪除文件或這類文件;cd/:跳轉(zhuǎn)到盤符;javac+文件名.java:編譯

    2024年02月08日
    瀏覽(21)
  • Java核心技術(shù)知識點筆記—并發(fā)

    前言:多任務(wù)(multitasking),即同一刻運行多個程序的能力。并發(fā)執(zhí)行的進程數(shù)目并不是由CPU數(shù)目制約的。操作系統(tǒng)將CPU的時間片分配給每一個進程,給人并行處理的感覺。 1、線程(thread):多線程程序的概念,即可以同時執(zhí)行多個任務(wù)的程序。其中,每個任務(wù)稱為一個線

    2023年04月12日
    瀏覽(29)
  • 【C語言】指針知識點筆記(2)

    【C語言】指針知識點筆記(2)

    目錄 一、野指針 二、assert斷言 三、指針的使用和傳址調(diào)用 四、數(shù)組名的理解 五、使用指針訪問數(shù)組

    2024年01月18日
    瀏覽(23)
  • C++筆記(細碎小知識點)1

    2024年02月08日
    瀏覽(24)
  • C++基礎(chǔ)知識點整理筆記(四)

    10. C++的內(nèi)存管理 在C++中,內(nèi)存被分成五個區(qū):棧、堆、自由存儲區(qū)、靜態(tài)存儲區(qū)、常量區(qū) (一) 棧:存放函數(shù)的參數(shù)和局部變量,編譯器自動分配和釋放 (二) 堆:new動態(tài)分配的內(nèi)存,由程序員手動進行釋放,否則程序結(jié)束后,由操作系統(tǒng)自動進行回收 (三) 自由存儲區(qū)

    2024年02月15日
    瀏覽(32)
  • Java核心知識點整理大全23-筆記

    Java核心知識點整理大全23-筆記

    目錄 21. JAVA 算法 21.1.1. 二分查找 21.1.2.冒泡排序算法 21.1.3. 插入排序算法 21.1.4. 快速排序算法 21.1.1. 希爾排序算法 21.1.2. 歸并排序算法 21.1.3. 桶排序算法 21.1.4. 基數(shù)排序算法 21.1.5. 剪枝算法 21.1.6. 回溯算法 21.1.7. 最短路徑算法 21.1.8. 最大子數(shù)組算法 21.1.9. 最長公共子序算法

    2024年02月04日
    瀏覽(54)
  • FPGA學習筆記-知識點3-Verilog語法1

    FPGA學習筆記-知識點3-Verilog語法1

    按其功能可分為以下幾類: 1) 算術(shù)運算符(+,-,×,/,%) 2) 賦值運算符(=,=) 3) 關(guān)系運算符(,,=,=) 4) 邏輯運算符(,||,!) 5) 條件運算符( ? :) 6) 位運算符(,|,^,,^) 7) 移位運算符(,) 8) 拼接運算符({ }) 9) 其它 按其所帶操作數(shù)的個數(shù)運算符可分為三種: 1) 單目運算符(unary operator):可以帶一個

    2024年02月06日
    瀏覽(17)
  • Vue.js知識點學習的一點筆記

    Vue.js知識點學習的一點筆記

    目錄 一、虛擬DOM? 二、MVVM 三、數(shù)據(jù)代理 四、事件修飾 五、鍵盤事件 六、插值語法{{}}、方法methods、計算屬性computed 七、 監(jiān)視、深度監(jiān)視、另一種寫法、簡寫 八、computed計算屬性和watch偵聽 九、什么時候用箭頭函數(shù) 十、Vue偵聽和watch偵聽原理 十一、從Vue偵聽原理得出,往對

    2024年02月11日
    瀏覽(19)
  • 軟考軟件設(shè)計師 數(shù)據(jù)庫知識點筆記

    軟考軟件設(shè)計師 數(shù)據(jù)庫知識點筆記

    了解即可 外模式對應(yīng)視圖 概念模式對應(yīng)的是數(shù)據(jù)庫管理系統(tǒng)里面的基本表 內(nèi)模式對應(yīng)的是數(shù)據(jù)庫里的一些存儲文件 上圖可直接背下面概念 有內(nèi)模式跟物理獨立性相關(guān),有外模式跟邏輯獨立性相關(guān) 兩級映像其中有一方肯定是模式,如下提d選項 候選碼的意思它只能表示那個

    2023年04月13日
    瀏覽(91)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包