1.可以使用@RequestMapping注解来映射URL
@ResponseBody
@RequestMapping(value = "/hello")
public String hello(){
return "Hello Spring Boot";
}
RequestMapping有多个属性来进一步匹配HTTP请求到Controller方法,分别是:value(请求的URL路径),method(HTTP请求方法例如POST、DELETE、PUT、GET等),consumes(允许的媒体类型,对应于请求的HTTP的Content-Type),produces(相应的媒体类型,对应于HTTP的Accept字段),params(请求的参数),headers(请求的HTTP头的值)。
2.URL路径匹配
value支持简单的表达式匹配;通配符匹配;URL映射也可以使用${}来获得系统的配置或者环境变量,通常用于Controller路径是通过配置文件设定的情况。
3.method匹配
可以在@RequestMapping注解中的method属性里配置或者直接使用新的注解@GetMapping、@PostMapping等来代替。
4.consumes匹配
属性consumes意味着请求的HTTP头的Content-Type媒体类型与consumes的值匹配,才能调用此方法。
例如:
@ResponseBody
@GetMapping(value = "test_consumes",consumes = "application/json")
public String forJson(String name){
return "123"+name+"321";
}
该段程序无法运行,会提示状态415错误,即由于媒介类型不被支持,服务器不会接受请求。
修改错误可以去掉consumes属性限制或者通过Ajax方法调用此段控制方法。
@ResponseBody
@PostMapping(value = "/test_consumes",consumes = "application/json")
public String forJson(@RequestBody User user){
return "123"+user.getName()+"321"+user.getId();
}
@GetMapping(value = "/test_html")
public String testHtml(){
return "test_ajax";
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>ajax测试</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
function loadQ() {
var dataValue = JSON.stringify({
name: 'bzy',
id: '3'
});
$.ajax({
async: false,
cache: false,
type: "post",
url: "/test_consumes",
contentType: "application/json",
data: dataValue
});
}
</script>
</head>
<body>
<button type="button" onclick="loadQ()" th:text="aaa"></button>
</body>
</html>
5.produces匹配
属性produces属性对应HTTP请求的Accept字段,只有匹配得上的方法才能被调用。
6.params和header匹配
可以从请求参数或HTTP头中提取值来进一步确定调用的方法。