美文网首页
[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