RESTful使用方法

Posted shouyaya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RESTful使用方法相关的知识,希望对你有一定的参考价值。

1.什么是RESTful

技术图片

 

 

 2.对应增删改查

技术图片

 

 

 注意:HTTP协议中并无PUT和DELETE的操作因此需在web.xml添加HiddenHttpMethodFilter用于识别PUT和DELETE操作

   原理是:从POST操作中额外分出PUT和DELETE操作

  <filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

并且使用PUT操作和DELETE操作时需在jsp页面添加隐藏的input标签,以表示PUT或DELETE

如使用删除操作:

                            <form action="${pageContext.request.contextPath}/delete/${course.id}" method="post">
                                <button class="btn btn-danger btn-sm delete_btn" type="submit">
                                    <input type="hidden" name="_method" value="DELETE"/>    <%-- 应添加此input标签 --%>
                                    <span class="glyphicon glyphicon-trash">删除</span>
                                </button>
                            </form>

3.controller的定义:

package com.yzy.controller;


import com.yzy.dao.courseDao;
import com.yzy.entity.Course;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;

@Controller
public class courseController {

    @Resource(name = "courseDao")
    private courseDao courseDao;

    @PostMapping("/add")
    public String add(Course course){
        courseDao.add(course);
        return "redirect:/getAll";   //重定向回getAll
    }

    @GetMapping("/getAll")
    public ModelAndView getAll(){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("courses",courseDao.getAll());
        modelAndView.setViewName("index");
        return modelAndView;
    }

    @GetMapping("/getById/{id}")
    public ModelAndView updateBefore(@PathVariable int id){     //id从路径中的{id}获取
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("course",courseDao.getById(id));
        modelAndView.setViewName("edit");
        return modelAndView;
    }

    @PutMapping("/update")
    public String update(Course course){
        courseDao.update(course);
        return "redirect:/getAll";
    }

    @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable int id){
        courseDao.delete(id);
        return "redirect:/getAll";
    }
}

 

 

 

HiddenHttpMethodFilter

以上是关于RESTful使用方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 WCF 客户端访问 RESTful 服务时访问 HTTP 状态代码

处理 Restful 服务

使用 RESTful Web 服务完成 Monaco 编辑器代码

有没有办法为 RESTful 堆栈生成样板代码?

如何使用ABAP Restful API进行代码的全文搜索

使用 RESTful 服务保护跨域的 API 调用