RESTful风格就是一种书写URL的要求
https://blog.csdn.net/qq_34218628/article/details/80696649
PS:面试问你会不会RESTful风格的API(其实就是问会不会用Json做数据交互,会不会用@RequestBody和@ResponseBody)
目录
现在很多网站都用RESTful风格的URL,为了应对这种URL形式,SpringMVC里有一些注解可以方便获得URL里的值
A、请求参数换成key/value

例如请求URL都这样,抓取的请求报文里没有请求参数,key/value值在url里
其实这就是RESTful风格的写法,请求参数不用key=value,而是key/value,对应这种形式,不可能每个请求写一个Handler方法,用下面方法可以一个方法通配多个URL
//在@RequestMapping注解的value属性,可以使用{}作为占位符,占位符的内容随意
//再通过@PathVariable注解的value(填占位符变量),
// 形参可以获得对应占位符的值
@RequestMapping("RESTful/{name}/{id}")
public User articleDetail(@PathVariable("name") String username,@PathVariable("id") Integer id) {
return new User();
}
发送URL不管是:http://localhost/RESTful/v/111,还是http://localhost/RESTful/m/55555,可以看到都是同一个Handler方法处理请求,并且形参是部分URL内容


B、@RequestParam
用@RequestParam获得请求参数对应的值 (没啥用)
对应URL是这种风格:localhost:8080/login?username=admin&password=dd

很少人用
C、@RequestHeader
用@RequestHeader获得请求头中的值
/**
* @RequestHeader的value属性中写请求头的key,使用Handler方法的形参获得请求头对应的value
* value的类型可以是字符串,也可以是字符串数组
*/
@RequestMapping("header")
public String header(@RequestHeader("Accept") String[] accept,
@RequestHeader("Cookie") String cookie) {
return "hello";
}
请求报文有这些请求头
接收到的参数


D、@CookieValue
通过@CookieValue获得cookie值
/**
* value属性中写的是cookie的key,通过key拿到对应的value,存放到handler方法的形参中
*/
@RequestMapping("cookie")
public String cookie(@CookieValue("name") String value2) {
//之前获得cookie是先获得Cookie数组做遍历 → 根据cookie的name拿到指定的value
return "hello";
}
E、@SessionAttribute
获得session域中指定key对应的value
//用到占位符
@RequestMapping("session1/{value}")//获得请求url的一部分作为session的value塞入session中
public BaseRespVo session(HttpSession session,@PathVariable("value")String value){
session.setAttribute("username",value);//放入session域
return BaseRespVo.ok();
}
@RequestMapping("session2")
//获得session域中key=username的value
public BaseRespVo session2(@SessionAttribute("username") String value){
return BaseRespVo.ok(value);
}
版权声明:本文为qq_43496435原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。