1. 程式人生 > >SpringBoot學習(八)--SpringBoot中Restful最佳實踐

SpringBoot學習(八)--SpringBoot中Restful最佳實踐

簡介

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