0x000 개요: http 요청을 메소드에 매핑합니다. 0x001 @RequestMapping: 이 주석은 컨트롤러 또는 메소드에 추가될 수 있습니다. 컨트롤러에 추가된 경우
http
요청을 메소드http
请求映射到某个方法上
@RequestMapping
这个注解可以加在某个Controller
或者某个方法上,如果加在Controller
上,则这个Controller
中的所有路由映射都将会加上这个前缀(下面会有栗子),如果加在方法上,则没有前缀(下面也有栗子)。
@RequestMapping
有以下属性
value
: 请求的URL
的路径
path
: 和value
一样
method
: 请求的方法
consumes
: 允许的媒体类型,也就是Content-Type
produces
: 相应的媒体类型,也就是Accept
params
: 请求参数
headers
: 请求头部
首先编写Controller
,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 HelloController { }
添加方法,并添加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로그인 후 복사
精确匹配
@RequestMapping(value = "/hello2") public Object hello2() { return "hello2"; }
说明:上面将
value
设置为hello2
,所以访问hello2
将会执行hello2
方法$ curl 127.0.0.1:8080/hello2 hello2로그인 후 복사
字符模糊匹配
@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로그인 후 복사
单字符模糊匹配
$ 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"}로그인 후 복사
全路径模糊匹配
@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로그인 후 복사
多个路径匹配
@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로그인 후 복사
读取配置
// 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로그인 후 복사
匹配请求中的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 ...
除了可以匹配URL
和method
之外,还可以匹配params
@RequestMapping<에 매핑합니다. /code><h3></h3>이 주석은 특정 <code>컨트롤러
또는 메서드에 추가될 수 있습니다. 컨트롤러
에 추가되면 이 주석은 컨트롤러의 모든 경로 매핑이 됩니다. code>에는 이 접두사가 추가됩니다(아래에 밤이 있음). 메소드에 추가되면 접두사가 없습니다(아래에 밤이 있음). @RequestMapping
에는 다음 속성이 있습니다value
: 요청된 URL
경로 path
:는 value
method
와 동일합니다. 요청된 메서드 consumes
: 허용되는 미디어 유형, 즉 Content-Type
생성
: 해당 미디어 유형, 즉 Accept
params
: 요청 매개변수headers
: 요청 헤더컨트롤러</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"; } }
URL
을 추가하세요: 🎜$ curl 127.0.0.1:8080/params?userId=1 params
🎜설명: 위에 추가된 메서드는에 액세스할 수 있습니다.hello
라는 이름으로, 지정된 속성 없이 일치합니다. 기본적으로 모든URL
이고 메소드는GET
이므로GET
메소드를 사용하여 직접 경로🎜rrreee
🎜설명: 위의 내용은값
을hello2
로 설정하므로hello2
는hello2
메소드🎜rrreee
🎜지침을 실행합니다. 위에서value
는/hello3/*
로 설정되고*
는 모든 문자, 즉hello3
에서 액세스하는 것과 일치합니다. > 모든URL
은 이 예방 조치와 일치합니다🎜rrreee
🎜참고: 위의 내용은 값은/hello4/?
로 설정됩니다.?
는 단일 문자와 일치하고hello4/1
와 일치하지만hello4/11
🎜rrreee
🎜설명과 일치하지 않음: 위의 내용은value는 <code>/hello5/**
로 설정됩니다.**
는 모든 경로와 일치하므로hello5
아래의 모든 경로는 이와 일치합니다. 메서드 🎜rrreee
rrreee
rrreee
메서드
, RequestMethod
에 작성된 열거형 값과 일치합니다. 🎜GET
🎜HEAD
🎜POST
🎜 PUT
🎜패치
🎜삭제 code> 🎜
OPTIONS
🎜TRACE
🎜URL
및 method
일치 외에도 params
🎜rrreeerrreee🎜0x004 Description🎜🎜위 참조 데이터: "Spring Boot2 The 본질: 소규모 시스템 구축부터 대규모 시스템 설계 및 배포까지" 🎜🎜관련 기사: 🎜🎜🎜mybatis 시작의 기본 사항 (4) ---- 입력 매핑 및 출력 매핑 🎜🎜🎜🎜"url 매핑 규칙" 및 django 응답 순서의 "서버 측"🎜🎜🎜관련 동영상: 🎜🎜🎜CSS3 시작하기 튜토리얼🎜🎜위 내용은 http 요청을 메소드에 매핑하는 방법은 무엇입니까? SpringBoot 시작하기: URL 매핑의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!