前言

常用的网络请求方式包括GET, POST, PUT, DELETE等,这些请求方式在Springboot中是如何使用的呢?下面就对这个内容进行探究。


一、请求方式

  1. GET:GET请求是来获取数据的,相当于数据库中的select,不对服务器数据做任何改动,get请求参数加在URL后面,必要时需进行涉密处理。
  2. POST:POST向服务器发送数据,相当于数据库的insert操作。会修改数据种类,在创建新的数据,提交表单时,采用POST请求。
  3. PUT:PUT也是想服务器发送数据,相当于数据库的update操作,用来修改数据内容,但是不会增加数据的种类。
  4. DELETE:DELETE用来删除数据,相当于数据库中的delete操作。

二、Springboot中相应注解

1、@RequestMapping

Springboot使用@RequestMapping来映射请求,前端发来请求可以通过@RequestMapping来决定由哪个函数处理。
@RequestMapping主要由value和method两个属性,value指的是映射路径,method指的是何种请求(可以设置多个)。例如:@RequestMapping(value=“/login”,method=RequestMethod.GET)
@GetMapping、@PostMapping、@PutMapping和@DeleteMapping分别是@RequestMapping请求方法为get、post、put、delete的派生注解。也就是说凡是使用到上面四种注解的地方都可以使用@RequestMapping来代替。如果@RequestMapping不设置method,那么它将接收符合条件的任何访问方式的请求。
下面是一个请求的前后端的代码示例(使用get请求方式):

    @RequestMapping("/list")
    public TableDataInfo list(CourseInfo courseInfo){
        Integer pageNum = courseInfo.getPageNum();
        Integer pageSize = courseInfo.getPageSize();
        String orderBy = courseInfo.getOrderBy();
        PageUtils.startMyPage(pageNum,pageSize,orderBy);
        List<CourseInfo> courseInfoList = courseService.selectCourseInfoList(courseInfo);
        return PageUtils.getMyDataTable(courseInfoList);

前端

export function listCourse(query){
  return request({
  // 这里多加一个/course的原因是在后端的整个类上加了 @RequestMapping("/course")注解
    url:'/course/list',
    method:'get',
    params:query
  })
}

一般在报错的http状态为405的时候,指的是请求方法不允许。出现这种错误需要考虑前后端的请求方法是否匹配。

可以使用带有占位符的@RequestMapping方法,将URL中的占位符绑定到处理方法的参数里。

    @RequestMapping("/{id}")
    public AjaxResult getCourse(@PathVariable("id") Long id){
        return AjaxResult.success(courseService.selectCourseById(id));
    }

2、@PutMapping

相当于:

@RequestMapping(value="/{id}", method=RequestMethod.PUT)

实例后端:

    @PutMapping
    public AjaxResult edit(@RequestBody CourseInfo courseInfo){
        return toAjax(courseService.updateCourse(courseInfo));
    }

实例前端:

export function updateCourse(data){
  return request({
    url:'/course',
    method:'put',
    data:data,
  })
}

3、@PostMapping

相当于:

@RequestMapping(value="", method=RequestMethod.POST)

实例后端:

    @PostMapping
    public AjaxResult add(@RequestBody CourseInfo courseInfo){
        System.out.println(courseInfo.toString());
        return toAjax(courseService.insertCourse(courseInfo));
    }

实例前端:

export function addCourse(data){
  return request({
    url:'/course',
    method:'post',
    data:data,
  })
}

4、 @DeleteMapping

相当于:

@RequestMapping(value="/{id}", method=RequestMethod.DELETE)

实例后端:

    @DeleteMapping("/{ids}")
    public AjaxResult delCourse(@PathVariable Long []ids){
        return toAjax(courseService.delCourse(ids));
    }

实例前端:

export function delCourse(id) {
  return request({
    url:'/course/'+id,
    method:'delete'
  })
}

总结

对@RequestMapping的总结告一段落,主要是RequestMapping的作用、参数、路由占位符使用,及其派生注解等。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐