springboot2.0 快速学习restful api 开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljk126wy/article/details/82724126

SpringBoot 开发resful api 比之前mvc restful api 更为快捷和简单。正所谓 没有对比就没有伤害,在介绍SpringBoot的写法之前,我们先看看SpringMVC 是如果实现 restful api的。在这里我将写一个用户的增删该查 restful 的api,这里只是简单实现一下 不再进行数据库连接代码开发。

0 公共代码

我们创建一个用户类 里面包含 用户名称 name 和 用户年龄age 成员变量

package cn.lijunkui.springbootlearn.restful.model;

public class User {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

 

1 SpringMVC restful API

package cn.lijunkui.springbootlearn.restful.controller;

import cn.lijunkui.springbootlearn.restful.model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * SpringMVC restful api
 */
@RequestMapping("/mvcUser")
@ResponseBody
public class SmvcRestController {
    Logger log = LoggerFactory.getLogger(SmvcRestController.class);
    /**
     * 根据用户id 查询用户
     * @return
     */
    @RequestMapping(value = "/{id}",method = RequestMethod.GET )
    public User get(@PathVariable(name = "id") Long id){
        User user = new User();
        user.setName("lijunkui");
        user.setAge(18);
        log.info("查询用户成功:"+"id:{}",id);
        return user;
    }
    /**
     * 添加用户
     */
    @RequestMapping(value = "",method = RequestMethod.POST)
    public void add(User user){
        log.info("添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
    }

    /**
     * 全部替换修改
     * @param user
     */
    @RequestMapping(value = "",method = RequestMethod.PUT)
    public void updatePUT(User user){
        log.info("修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
    }

    /**
     * 局部修改用户名称
     * @param name
     */
    @RequestMapping(value = "",method = RequestMethod.PATCH)
    public void updatePATCH(String name){
        log.info("修改用户成功:"+"name:{}",name);
    }

    /**
     * 删除用户
     */
    @RequestMapping(value = "{id}",method = RequestMethod.DELETE)
    public void delete(@PathVariable("id") Long id){
        User user = new User();
        user.setName("lijunkui");
        user.setAge(18);
        log.info("删除用户成功:"+"id:{}",id);
    }
}

2 mvc Api 测试

我们这里使用POSTMan 进行接口测试

2.1 查询id 为1 的用户

2.2 添加用户测试

2.3 全局修改用户测试

2.4 局部修改测试

2.5 删除测试

3 SpringBoot restful API

package cn.lijunkui.springbootlearn.restful.controller;

import cn.lijunkui.springbootlearn.restful.model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

/**
 * SpringBoot restful api
 */
@RestController()
@RequestMapping("/bootUser")
public class SBootRestController {

    Logger log = LoggerFactory.getLogger(SmvcRestController.class);
    /**
     * 根据用户id 查询用户
     * @return
     */
    @GetMapping("/{id}")
    public User get(@PathVariable(name = "id") Long id){
        User user = new User();
        user.setName("lijunkui");
        user.setAge(18);
        log.info("springboot查询用户成功:"+"id:{}",id);
        return user;
    }
    /**
     * 添加用户
     */
    @PostMapping()
    public void add(User user){
        log.info("springboot添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
    }
    @PutMapping()
    public void updatePut(User user){
        log.info("springboot Put 修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
    }
    /**
     * 局部更新
     */
    @PatchMapping("/{name}")
    public void updatePatch(@PathVariable("name") String name){
        log.info("springboot Patch 修改用户成功:"+"name:{}",name);
    }
    /**
     * 删除用户
     */
    @DeleteMapping("/{id}")
    public void delete(@PathVariable("id") Long id){
        User user = new User();
        user.setName("lijunkui");
        user.setAge(18);
        log.info("springboot 删除用户成功:"+"id:{}",id);
    }
}

4 springBoot API 测试

4.1 查询测试

4.2 添加测试

4.3 全局修改测试

 

4.4 局部修改测试

4.5 删除测试

通过上面的代码我们发现 springBoot 比springMvc 简洁了很多 。

1 直接通过@RestController进行声明无需在类上在添加 @ResponseBody注解。

2 直接通过@GetMapping @PutMapping 进行声明其实get 和put方式提交 无需在@RequestMapping注解中添加method = RequestMethod.GET 来完成。

在进行开发是遇到啦问题 就是 put 修改时参数接受不到 然后百度查询需要配置HttpPutFormContentFilter 才可以。但是springBoot 没有xml 所以我们需要通过注解的方式来配置HttpPutFormContentFilter过滤器。

import org.springframework.stereotype.Component;
import org.springframework.web.filter.HttpPutFormContentFilter;

/**
 * 解决restFul put 参数无法接收的问题
 */
@Component
public class PutFilter extends HttpPutFormContentFilter {
}

关于put 接受不到参数的解决方案

参考文献:https://www.aliyun.com/jiaocheng/852091.html

猜你喜欢

转载自blog.csdn.net/ljk126wy/article/details/82724126