@Controller
默认返回页面地址
@Controller
public class Test{
@RequestMapping("/index.page")
public String index(){
// 会返回 src/main/resources/templates/index.html 文件
return "index";
}
}
@RestController
@Controller 和 @ResponseBody 的结合体
@RestController
public class Test{
@RequestMapping("/index.page")
public String index(){
// 返回字符串 index
return "index";
}
}
@RequestMapping
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
// 这三个货互为别名
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
// 指定请求方式 RequestMethod。请求不合法响应 405
RequestMethod[] method() default {};
// 限定参数。参数不匹配响应 400
String[] params() default {};
// 限定 header
String[] headers() default {};
// 限定请求类型,content-type,MediaType,不匹配响应 415
String[] consumes() default {};
// 响应什么数据
String[] produces() default {};
}
一些示例
@RestController
public class Test3{
// 请求 url 参数必须有 age,http://localhost:8080/hello?age=18
@RequestMapping(value="/hello", params="age")
public void test1(int age){
}
// 请求参数必须有 age 并且值必须为 18,必须携带 username,gender 不能为1(不带 gender 也相当于!=1)
@RequestMapping(value="/hello2", params={"age=18","username","gender!=1"})
public void test1(int age, String username, int gender){
}
// 请求中请求有必须要有 token 参数
@RequestMapping(value="/hello3", headers="token")
public void test1(@RequestHeader("token") String age){
}
// 当请求的 content-type 是 MediaType.APPLICATION_JSON_VALUE 才会走这个方法
@PostMapping(value = "/hello4", consumes = MediaType.APPLICATION_JSON_VALUE)
public String hello(@RequestBody MyRequestBody requestBody) {
return "Received name: " + requestBody.getName();
}
// 返回 json,所以方法返回值要是一个对象
@GetMapping(value = "/hello5", produces = MediaType.APPLICATION_JSON_VALUE)
public MyResponseBody hello() {
return new MyResponseBody("Hello, World!");
}
}
class MyResponseBody {
private String message;
public MyResponseBody(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
REST Ful
@GetMapping
:获取资源@PostMapping
:创建资源@PutMapping
:更新整个资源@DeleteMapping
:删除资源@PatchMapping
:更新资源部分信息