美文网首页
[java]51、RESTful

[java]51、RESTful

作者: 史记_d5da | 来源:发表于2022-08-17 07:58 被阅读0次

1、RESTful简介

REST的全称:REpresentational State Transfer
译为“表现层状态转移”
REST是一种互联网软件架构设计风格
定义一组用于创建web服务的约束
符合REST架构的Web服务,称为RESTful Web服务

2、RESTful风格

URL中使用名词(建议用复数形式),不使用动词
推荐:/books/books/6
不推荐:/listBooks/getBooks?id=6/book/list/book/get?id=6
使用HTTP的方法表达动作

GET:查询 POST:创建 PUT:更新 DELETE:删除
/books 查询所有书 创建一本书 更新所有书的信息 删除所有书的信息
/books/6 查询id为6的书 405 Method Not Allow 更新id为6的书的信息 删除id为6的书的信息

一个资源连接到其他资源使用的是子资源的形式
GET /books/6/pages/77
POST /books/7/pages

2.1、使用时的注意点

1、API版本化,使用不同的版本的两个接口v1v2
sj.com/v1/books
sj.com/v2/books/6
2、返回数据发生错误时,不要返回200状态码

2.2、PUT、DELETE

浏览器的form不支持putdelete,可以使用HiddenHttpMethodFilter进行转化
put请求:post + _method = put
delete请求:post + _method = delete

<form action="${ctx}/skills/10" method="post">
    <input type="hidden" name="_method" value="put">
    <button type="submit">提交</button>
</form>

以上的form请求,匹配的methodput

@Controller
@RequestMapping("/skills")
public class SkillController {
    @PutMapping("/{id}")
    public String update(@PathVariable("id") Integer id, Skill skill) {
        System.out.println("update");
        return  "更新成功";
    }
}

为了安全起见,现在很多公司都严格禁用PUTDELETE请求

2.3、@RestController

@RestController = @Controller + @ResponseBody
1、使用@RestController默认情况下都会方法增加@ResponseBody
2、如果希望跳转到页面,还是得使用ModelAndView对象

@RestController
public class TestController {
    @GetMapping("/{id}")
    public Skill get(@PathVariable("id") Integer id) {
        return  null;
    }
    @GetMapping("/view/{id}")
    public ModelAndView view(@PathVariable("id") Integer id) {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/page/index.jsp");
        mv.addObject("name", "jack");
        return  mv;
    }
}

相关文章

网友评论

      本文标题:[java]51、RESTful

      本文链接:https://www.haomeiwen.com/subject/gpjsgrtx.html