1. 程式人生 > >SpringBoot 學習-restful api 開發(二)

SpringBoot 學習-restful api 開發(二)

SpringBoot 開發resful api 比之前mvc restful api 更為快捷和簡單。正所謂 沒有對比就沒有傷害,在介紹SpringBoot的寫法之前,我們先看看SpringMVC 是如果實現 restful api的。在這裡我將寫一個使用者的增刪該查 restful 的api,這裡只是簡單實現一下 不再進行資料庫連線程式碼開發。

0 公共程式碼

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 刪除測試

在進行開發是遇到啦問題 就是 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