使用Spring boot开发RestFul风格项目PUT/DELETE方法不起作用
这也是rest api相对高级用法,也就是URL里面没有动词,都是用put,get,delete,post(replace),patch表示动作
在使用Spring boot 开发restful 风格的项目,put、delete方法不起作用,解决办法。
实体类Student
@Data public class Student { private String id; private String name; private int age; private String sex; @Override public String toString() { return ToStringBuilder.reflectionToString(this); } }
controller
@RestController public class GreetingController { @RequestMapping(value = "/demo1/student", method = RequestMethod.POST) public void addStudent(Student student) { System.out.println(student); System.out.println("添加成功"); } @RequestMapping(value = "/demo1/student", method = RequestMethod.PUT) public void updateStudent(Student student) { System.out.println(student); System.out.println("更新成功"); } @RequestMapping(value = "/demo1/student", method = RequestMethod.GET) public Student getAtudentById(String id) { System.out.println("接收到的的参数" + id); Stuent s = new Student(); s.setId("12"); s.setName("google"); s.setAge(12); return s; } @RequestMapping(value = "/demo1/student", method = RequestMethod.DELETE) public void delStudent(Student student) { System.out.println(student); System.out.println("删除成功"); } }
使用put 更新接口调用,参数无法传递过去。解决办法是在需要组装的参数前面添加注解 @RequestBody
修改如下:
@RequestMapping(value = "/demo1/student", method = RequestMethod.PUT) public void updateStudent(@RequestBody Student student) { System.out.println(student); System.out.println("更新成功"); }
即可成功调用。
delete 接口修改方法相同。