SpringBoot學習(八)--SpringBoot中Restful最佳實踐
阿新 • • 發佈:2019-02-20
簡介
Restful:遵守了rest風格的web服務便可稱為Restful。
為什麼需要Restful?
- URL具有很強可讀性的,具有自描述性
- 規範化請求過程和返回結果
- 資源描述與檢視的鬆耦合
- 可提供OpenAPI,便於第三方系統整合,提高互操作性
- 提供無狀態的服務介面,降低複雜度,可提高應用的水平擴充套件性
實戰
在之前SpringBoot學習系列的工程基礎上,新增Restful API。Restful的核心在controller,以使用者的增刪改查為例,程式碼如下
package com.pf.org.cms.web;
import com.alibaba .fastjson.JSONObject;
import com.pf.org.cms.common.IConstants;
import com.pf.org.cms.entity.JsonBean;
import com.pf.org.cms.entity.UserInfo;
import com.pf.org.cms.service.UserService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework .web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* @Auther: pf
* @Date: 2018/2/27 19:52
* @Description:
*/
@RestController
@RequestMapping(value = "/admin")
public class AdminController {
@Autowired
UserService userService;
@ApiOperation(value = "getUser", notes = "管理員介面獲取使用者")
@RequestMapping(method = RequestMethod.GET, value = "/user")
public String getUser(@RequestParam long id) {
JsonBean reData = new JsonBean();
Map user = userService.getUserInfo(id);
reData.setStatus(IConstants.RESULT_INT_SUCCESS);
reData.setMessage("查詢成功");
reData.setData(user);
return JSONObject.toJSONString(reData);
}
@ApiOperation(value = "addUser", notes = "管理員介面新增使用者")
@RequestMapping(method = RequestMethod.POST, value = "/user")
public String addUser(@RequestParam String user) {
JsonBean reData = new JsonBean();
UserInfo userInfo = (UserInfo) JSONObject.parseObject(user, UserInfo.class);
if (userService.addUserInfo(userInfo)) {
reData.setStatus(IConstants.RESULT_INT_SUCCESS);
reData.setMessage("新增成功");
} else {
reData.setStatus(IConstants.RESULT_INT_ERROR);
reData.setMessage("新增失敗");
}
return JSONObject.toJSONString(reData);
}
@ApiOperation(value = "updateUser", notes = "管理員介面更新使用者")
@RequestMapping(method = RequestMethod.PUT, value = "/user")
public String updateUser(@RequestParam String user) {
JsonBean reData = new JsonBean();
UserInfo userInfo = (UserInfo) JSONObject.parseObject(user, UserInfo.class);
if (userService.updateUserInfo(userInfo)) {
reData.setStatus(IConstants.RESULT_INT_SUCCESS);
reData.setMessage("更新成功");
} else {
reData.setStatus(IConstants.RESULT_INT_ERROR);
reData.setMessage("更新失敗");
}
return JSONObject.toJSONString(reData);
}
@ApiOperation(value = "delUser", notes = "管理員介面刪除使用者")
@RequestMapping(method = RequestMethod.DELETE, value = "/user")
public String delUser(@RequestParam long id) {
JsonBean reData = new JsonBean();
if (userService.deleteUserInfo(id)) {
reData.setStatus(IConstants.RESULT_INT_SUCCESS);
reData.setMessage("刪除成功");
} else {
reData.setStatus(IConstants.RESULT_INT_ERROR);
reData.setMessage("刪除失敗");
}
return JSONObject.toJSONString(reData);
}
}
@RestController作用相當於@ResponseBody + @Controller
這裡的線上API工具使用的是SpringBoot學習(六)中介紹的swagger,@ApiOperation為swagger中的註解。
UserService這裡不做介紹,即為基礎的增刪改查服務,執行工程,訪問swagger-ui.html頁面後結果為:
根據自己的測試資料測試一下查詢介面:
也可以再測試一下新增使用者的介面
最後,Restful的實現並不複雜,最重要的是需要理解Restful的思想,並且在架構設計好後更加規範的編碼執行。本文及本系列專案工程地址:https://github.com/15651037763/cms