RESTful风格接口
- RESTful架构是对MVC架构改进后所形成的一种架构,通过使用事先定义好的接口与不同的服务联系起来。在RESTful架构中,浏览器使用POST,DELETE,PUT和GET四种请求方式分别对指定的URL资源进行增删改查操作。因此,RESTful是通过URI实现对资源的管理及访问,具有扩展性强、结构清晰的特点。
- RESTful架构将服务器分成前端服务器和后端服务器两部分,前端服务器为用户提供无模型的视图;后端服务器为前端服务器提供接口。浏览器向前端服务器请求视图,通过视图中包含的AJAX函数发起接口请求获取模型。
通过请求方法的不同,使用不同的handler方法来进行处理
localhost:8080/user
GET:查询
POST:更新
DELETE: 删除
设计接口的url
名词(资源)+动词(操作)的形式
查询: user/query user/list
更新: user/update
删除: user/delete
@ResponseBody和@RequestBody
获得请求能够提供的值,封装为handler方法的形参
0.代码
BaseRespVo
@Data
public class BaseRespVo<T> {
T data;
String message;
long errno;
public static BaseRespVo ok(){
BaseRespVo baseRespVo = new BaseRespVo();
baseRespVo.setMessage("成功");
baseRespVo.setErrno(0);
return baseRespVo;
}
public static BaseRespVo ok(Object data){
BaseRespVo ok = BaseRespVo.ok();
ok.setData(data);
return ok;
}
}
RestfulController
@RestController
public class RestfulController {
@RequestMapping("{usernamez}/article/details/{idz}")
public BaseRespVo articleDetails(@PathVariable("usernames") String username,
@PathVariable("idz") Integer id){
return BaseRespVo.ok(username+":"+id);
}
//localhost:8080/login?username=jingtian&password=niupi
@RequestMapping("login")
public BaseRespVo login(@RequestParam("username") String parameter1,
@RequestParam("password") String parameter2){
return BaseRespVo.ok();
}
@RequestMapping("header")
public BaseRespVo header(@RequestHeader("Accept") String[] accept,
@RequestHeader("Host") String host){
for (String s : accept) {
System.out.println(s);
}
System.out.println(host);
return BaseRespVo.ok();
}
@RequestMapping("cookie/value")
public BaseRespVo cookieValue(@CookieValue("username")String value){
return BaseRespVo.ok();
}
@RequestMapping("put/session/{username}")
public BaseRespVo putSession(@PathVariable("username")String value, HttpSession session){
session.setAttribute("username",value);
return BaseRespVo.ok();
}
@RequestMapping("session/attribute")
public BaseRespVo sessionAttribute(@SessionAttribute("username")String value){
return BaseRespVo.ok(value);
}
}
1.@PathVariable 👉 url(最重要)
获得请求url的一部分作为形参
2. @RequestParam 👉 请求参数
获得请求参数作为形参
3. @RequestHeader 👉 请求头
拿到特定的请求头中的值
4. @CookieValue 👉 Cookie
拿到cookie中指定name所对应的value
5. @SessionAttribute 👉 Session
拿到session中指定attributename对应的value
也可以使用Object来接受对应的值