@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(){// 返回字符串 indexreturn "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。请求不合法响应 405RequestMethod[] method() default {};// 限定参数。参数不匹配响应 400String[] params() default {};// 限定 headerString[] headers() default {};// 限定请求类型,content-type,MediaType,不匹配响应 415String[] 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
:更新资源部分信息