首頁 > Java > java教程 > 主體

怎麼將某個http請求對應到某個方法上? SpringBoot入門:URL 映射

php是最好的语言
發布: 2018-07-27 10:24:02
原創
5820 人瀏覽過

0x000 概述:將某個http請求對應到某個方法上。 0x001 @RequestMapping:這個註解可以加在某個Controller或某個方法上,如果加在Controller上

0x000 概述

將某個#http請求對應到某個方法上

0x001 @RequestMapping

這個註解可以加在某個Controller或某個方法上,如果加在Controller上,則這個Controller中的所有路由映射都會加上這個前綴(下面會有栗子),如果加在方法上,則沒有前綴(下面也有栗子)。

@RequestMapping有以下屬性

  • #value: 請求的URL的路徑

  • path: 和value一樣

  • method: 請求的方法

  • consumes: 允許的媒體類型,也就是Content-Type

  • # #produces: 對應的媒體類型,也就是Accept

  • #params: 請求參數

  1. ##headers
  2. : 要求頭部
  3. 0x002 路由匹配

    先寫ControllerController頭部的@RestController將這個控制器標註為Rest控制器:

    package com.lyxxxx.rest.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
    }
    登入後複製

    ##添加方法,並新增
  4. URL
  5. 匹配:

        @RequestMapping()
        public Object hello() {
            return "hello";
        }
    登入後複製

    說明:上面新增了一個方法,名為hello,沒有給定任何的屬性,則預設符合所有URL,方法為GET,所以我們可以直接使用GET方式來存取該路由

    $ curl 127.0.0.1:8080
    hello
    $ curl 127.0.0.1:8080/user
    hello
    $ curl 127.0.0.1:8080/user/1
    hello
    登入後複製

  6. 精確匹配

    @RequestMapping(value = "/hello2")
    public Object hello2() {
        return "hello2";
    }
    登入後複製

    說明:上面將value設定為hello2,所以訪問hello2將會執行hello2方法

    $ curl 127.0.0.1:8080/hello2
    hello2
    登入後複製

    字元模糊匹配
  7. @RequestMapping(value = "/hello3/*")
    public Object hello3() {
        return "hello3";
    }
    登入後複製
  8. #說明
    :上面將

    value設定為/hello3/*,*為匹配所有字符,也就是存取hello3下的所有URL都會匹配該防範

    $ curl 127.0.0.1:8080/hello3/user
    hello3
     curl 127.0.0.1:8080/hello3/1
    hello3
    登入後複製

    #單字元模糊匹配
  9. $ curl 127.0.0.1:8080/hello4/1
    hello4
    登入後複製
  10. ##說明

    #:上面將
    value

    設定為/hello4/?,?為符合單一字符,符合hello4/1,但不會匹配hello4/11<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$ curl 127.0.0.1:8080/hello4/1 hello4 $ curl 127.0.0.1:8080/hello4/12 {&quot;timestamp&quot;:&quot;2018-07-25T05:29:39.105+0000&quot;,&quot;status&quot;:404,&quot;error&quot;:&quot;Not Found&quot;,&quot;message&quot;:&quot;No message available&quot;,&quot;path&quot;:&quot;/hello4/12&quot;}</pre><div class="contentsignin">登入後複製</div></div>

  11. #全路徑模糊匹配
  12. @RequestMapping(value = "/hello5/**")
    public Object hello5() {
        return "hello5";
    }
    登入後複製

    說明
    :上面將
  13. value
  14. 設定為

    /hello5/**

    ,
    **
    為符合所有路徑,所以
  15. hello5
下面的所有路由都會符合這個方法

$ curl 127.0.0.1:8080/hello5
hello5
$ curl 127.0.0.1:8080/hello5/user/1
hello5
登入後複製

多個路徑匹配<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">@RequestMapping(value = {&quot;/hello6&quot;, &quot;/hello6/1&quot;}) public Object hello6() { return &quot;hello6&quot;; }</pre><div class="contentsignin">登入後複製</div></div>

$ curl 127.0.0.1:8080/hello6
hello6
$ curl 127.0.0.1:8080/hello6/1
hello6F
登入後複製

  • 讀取配置<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">// resources/application.properties app.name=hello7 // com.lyxxxx.rest.controller.HelloController @RequestMapping(value = &quot;${app.name}&quot;) public Object hello7() { return &quot;hello7&quot;; }</pre><div class="contentsignin">登入後複製</div></div>

    $ curl 127.0.0.1:8080/hello7
    hello7
    登入後複製

  • 0x003 方法符合符合要求中的

    method
  • ,寫在
  • RequestMethod

    中的列舉值:

  • GET

  • #HEAD

  • #POST

  • PUT

  • #PATCH

##DELETE

OPTIONS##################TRACE# ###########
package com.lyxxxx.rest.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MethodController {
    @RequestMapping(path = "method/get", method = RequestMethod.GET)
    public Object get() {
        return "get";
    }

    @RequestMapping(path = "method/head", method = RequestMethod.HEAD)
    public Object head() {
        return "head";
    }

    @RequestMapping(path = "method/post", method = RequestMethod.POST)
    public Object post() {
        return "post";
    }

    @RequestMapping(path = "method/put", method = RequestMethod.PUT)
    public Object put() {
        return "put";
    }

    @RequestMapping(path = "method/patch", method = RequestMethod.PATCH)
    public Object patch() {
        return "patch";
    }

    @RequestMapping(path = "method/delete", method = RequestMethod.DELETE)
    public Object delete() {
        return "delete";
    }

    @RequestMapping(path = "method/options", method = RequestMethod.OPTIONS)
    public Object options() {
        return "options";
    }

    @RequestMapping(path = "method/trace", method = RequestMethod.TRACE)
    public Object trace() {
        return "trace";
    }


}
登入後複製
$ curl -X GET  127.0.0.1:8080/method/get
get
$ curl -X POST 127.0.0.1:8080/method/post
post
$ curl -X DELETE 127.0.0.1:8080/method/delete
delete
$ curl -X PUT 127.0.0.1:8080/method/put
put
...
登入後複製
###0x003 params 符合######除了可以符合###URL###和###method###之外,還可以符合## #params######
package com.lyxxxx.rest.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ParamsController {
    @RequestMapping(path = "/params", params = "userId=1")
    public Object params() {
        return "params";
    }
}
登入後複製
$ curl 127.0.0.1:8080/params?userId=1
params
登入後複製
###0x004 說明######以上參考資料:《Spring Boot2精髓從建構小系統到架構分部署大系統》#######相關文章:## #######mybatis入門基礎(四)----輸入映射與輸出映射#############django中「url映射規則」與「服務端回應順序」## #######相關影片:#########CSS3 入門教學#######

以上是怎麼將某個http請求對應到某個方法上? SpringBoot入門:URL 映射的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板