SpringBoot 學習-restful api 開發(二)
阿新 • • 發佈:2018-12-10
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