> Java > java지도 시간 > 본문

http 요청을 메소드에 매핑하는 방법은 무엇입니까? SpringBoot 시작하기: URL 매핑

php是最好的语言
풀어 주다: 2018-07-27 10:24:02
원래의
5813명이 탐색했습니다.

0x000 개요: http 요청을 메소드에 매핑합니다. 0x001 @RequestMapping: 이 주석은 컨트롤러 또는 메소드에 추가될 수 있습니다. 컨트롤러에 추가된 경우

0x000 개요

http 요청을 메소드http请求映射到某个方法上

0x001 @RequestMapping

这个注解可以加在某个Controller或者某个方法上,如果加在Controller上,则这个Controller中的所有路由映射都将会加上这个前缀(下面会有栗子),如果加在方法上,则没有前缀(下面也有栗子)。

@RequestMapping有以下属性

  • value: 请求的URL的路径

  • path: 和value一样

  • method: 请求的方法

  • consumes: 允许的媒体类型,也就是Content-Type

  • produces: 相应的媒体类型,也就是Accept

  • params: 请求参数

  • headers: 请求头部

0x002 路由匹配

  1. 首先编写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 {
    
    }
    로그인 후 복사
  2. 添加方法,并添加URL匹配:

        @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
    로그인 후 복사
  3. 精确匹配

    @RequestMapping(value = "/hello2")
    public Object hello2() {
        return "hello2";
    }
    로그인 후 복사

    说明:上面将value设置为hello2,所以访问hello2将会执行hello2方法

    $ curl 127.0.0.1:8080/hello2
    hello2
    로그인 후 복사
  4. 字符模糊匹配

    @RequestMapping(value = "/hello3/*")
    public Object hello3() {
        return "hello3";
    }
    로그인 후 복사

    说明:上面将value设置为/hello3/*,*为匹配所有字符,也就是访问hello3下的所有URL都将匹配该防范

    $ curl 127.0.0.1:8080/hello3/user
    hello3
     curl 127.0.0.1:8080/hello3/1
    hello3
    로그인 후 복사
  5. 单字符模糊匹配

    $ curl 127.0.0.1:8080/hello4/1
    hello4
    로그인 후 복사

    说明:上面将value设置为/hello4/?,?为匹配单个字符,匹配hello4/1,但是不会匹配hello4/11

    $ curl 127.0.0.1:8080/hello4/1
    hello4
    $ curl 127.0.0.1:8080/hello4/12
    {"timestamp":"2018-07-25T05:29:39.105+0000","status":404,"error":"Not Found","message":"No message available","path":"/hello4/12"}
    로그인 후 복사
  6. 全路径模糊匹配

    @RequestMapping(value = "/hello5/**")
    public Object hello5() {
        return "hello5";
    }
    로그인 후 복사

    说明:上面将value设置为/hello5/**,**为匹配所有路径,所以hello5下面的所有路由都将匹配这个方法

    $ curl 127.0.0.1:8080/hello5
    hello5
    $ curl 127.0.0.1:8080/hello5/user/1
    hello5
    로그인 후 복사
  7. 多个路径匹配

    @RequestMapping(value = {"/hello6", "/hello6/1"})
    public Object hello6() {
        return "hello6";
    }
    로그인 후 복사
    $ curl 127.0.0.1:8080/hello6
    hello6
    $ curl 127.0.0.1:8080/hello6/1
    hello6F
    로그인 후 복사
  8. 读取配置

    // resources/application.properties
    
    app.name=hello7
    
    // com.lyxxxx.rest.controller.HelloController
    
    @RequestMapping(value = "${app.name}")
    public Object hello7() {
        return "hello7";
    }
    로그인 후 복사
    $ 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 匹配

除了可以匹配URLmethod之外,还可以匹配params

0x001 @RequestMapping<에 매핑합니다. /code><h3></h3>이 주석은 특정 <code>컨트롤러 또는 메서드에 추가될 수 있습니다. 컨트롤러에 추가되면 이 주석은 컨트롤러의 모든 경로 매핑에는 이 접두사가 추가됩니다(아래에 밤이 있음). 메소드에 추가되면 접두사가 없습니다(아래에 밤이 있음).

@RequestMapping에는 다음 속성이 있습니다

0x002 경로 일치🎜
  1. 🎜먼저 컨트롤러</code 작성 > , <code>Controller 헤더의 @RestController는 이 컨트롤러를 Rest 컨트롤러로 표시합니다. 🎜
    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";
        }
    }
    로그인 후 복사
  2. 🎜Add method , 그리고 일치하는 URL을 추가하세요: 🎜
    $ curl 127.0.0.1:8080/params?userId=1
    params
    로그인 후 복사
    🎜설명: 위에 추가된 메서드는 hello라는 이름으로, 지정된 속성 없이 일치합니다. 기본적으로 모든 URL이고 메소드는 GET이므로 GET 메소드를 사용하여 직접 경로🎜rrreee
    에 액세스할 수 있습니다.
  3. 🎜정확한 일치🎜rrreee
    🎜설명: 위의 내용은 hello2로 설정하므로 hello2hello2 메소드🎜rrreee
  4. 🎜문자 퍼지 일치🎜rrreee
    🎜지침을 실행합니다. 위에서 value/hello3/*로 설정되고 *는 모든 문자, 즉 hello3에서 액세스하는 것과 일치합니다. > 모든 URL은 이 예방 조치와 일치합니다🎜rrreee
  5. 🎜단일 문자 퍼지 일치🎜rrreee
    🎜참고: 위의 내용은 값은 /hello4/?로 설정됩니다. ?는 단일 문자와 일치하고 hello4/1와 일치하지만 hello4/11🎜rrreee
  6. 🎜전체 경로 퍼지 일치🎜rrreee
    🎜설명과 일치하지 않음: 위의 내용은 value는 <code>/hello5/**로 설정됩니다. **는 모든 경로와 일치하므로 hello5 아래의 모든 경로는 이와 일치합니다. 메서드 🎜rrreee
  7. 🎜다중 경로 일치🎜rrreee
    rrreee
  8. 🎜구성 읽기🎜rrreee
    rrreee
🎜0x003 메소드 일치🎜🎜는 요청의 메서드, RequestMethod에 작성된 열거형 값과 일치합니다. 🎜
  • 🎜GET🎜
  • 🎜HEAD🎜
  • 🎜POST🎜
  • 🎜PUT🎜
  • 🎜패치🎜
  • 🎜삭제 code> 🎜
  • 🎜OPTIONS🎜
  • 🎜TRACE🎜
rrreeerrreee🎜0x003 매개변수 일치 🎜🎜 URLmethod 일치 외에도 params🎜rrreeerrreee🎜0x004 Description🎜🎜위 참조 데이터: "Spring Boot2 The 본질: 소규모 시스템 구축부터 대규모 시스템 설계 및 배포까지" 🎜🎜관련 기사: 🎜🎜🎜mybatis 시작의 기본 사항 (4) ---- 입력 매핑 및 출력 매핑 🎜🎜🎜🎜"url 매핑 규칙" 및 django 응답 순서의 "서버 측"🎜🎜🎜관련 동영상: 🎜🎜🎜CSS3 시작하기 튜토리얼🎜🎜

위 내용은 http 요청을 메소드에 매핑하는 방법은 무엇입니까? SpringBoot 시작하기: URL 매핑의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿