說到接口開發,能想到的開發語言有不少種,像什麼Java啊、.NET啊、PHP啊、NodeJS啊,太多能夠用。爲何選擇Java,究其緣由,最後只有一個解釋,那就是「學Java的人多,人員招聘範圍大,有利於團隊擴建」。真要說說效率的話,恕我直言,真不如NodeJS(其餘的.NET、PHP我不會,O(∩_∩)O~~)。前端
言歸正傳,基於Java的框架不少,最終選擇了SpringBoot(中間的過程就不說了,折磨了我2天),咱們要實現的主要目標,一句話歸納「收到前端發送的API接口請求,完成數據以及邏輯處理,返回結果數據」。java
1、建立基礎工程web
1. 打開IDEA -> File -> New -> Project...spring
建立完工程之後,大概就是上面這個模樣(彆着急繼續,等你的Maven把依賴庫下載完,再繼續下面的。若是你連Maven都沒安裝的話,先自行百度把Maven配置好)。api
二. 建立項目目錄數組
(慶幸一口氣在圖片上都標註號了)springboot
多說一句,目錄結構,徹底能夠根據本身的項目須要從新歸置,畢竟本身用的順手纔是最重要的。app
3、接下來寫個樣例框架
controller/Testthis
package com.univalsoft.springbootapimaster.api.controller; import com.univalsoft.springbootapimaster.common.controller.BaseController; import com.univalsoft.springbootapimaster.common.model.APIResponse; 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; @RestController public class Test extends BaseController { @RequestMapping(value = "/api/test/try", method = RequestMethod.POST) public APIResponse uploadImage( @RequestParam(value = "name") String name /* 姓名 */ ) { // if (name.length() < 3) { return this.fail("[姓名]參數不合法,請從新輸入"); } String result = name + ", 歡迎瀏覽,轉載請註明出處!!!(Univalsoft)"; return this.success(result); } }
如此簡單的代碼,就很少說了哈,看不懂的,自覺找個牆角面壁。
運行程序,have a try !
幾個重要的基類
1. BaseController
package com.univalsoft.springbootapimaster.common.controller; import com.univalsoft.springbootapimaster.common.model.APIResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; @RestController public class BaseController { public final Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 返回成功Response * * @param data * @return */ public APIResponse success(Object data) { logger.info("請求結束 :success: =>", data.toString()); APIResponse res = new APIResponse(); res.success(data); return res; } /** * 分頁列表 * * @param data * @param pageIndex * @param pageSize * @param total * @return */ public APIResponse successWithPage(Object data, int pageIndex, int pageSize, int total) { logger.info("請求結束 :success: =>", data.toString()); APIResponse res = new APIResponse(); HashMap<String, Object> pageResponse = new HashMap<>(); pageResponse.put("data", data); pageResponse.put("current", pageIndex); pageResponse.put("hasMore", pageIndex * pageSize < total); pageResponse.put("total", total); res.success(pageResponse); return res; } /** * 返回錯誤Response * * @param errmsg * @return */ public APIResponse fail(String errmsg) { logger.info("請求結束 :fail: =>", errmsg); APIResponse res = new APIResponse(); res.fail(1, errmsg); return res; } }
2. APIResponse
package com.univalsoft.springbootapimaster.common.model; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class APIResponse { /** * */ private static final long serialVersionUID = 1L; public static final int ERROR_PARAM_INVALID = 40001; public static final int ERROR_AUTH_FAIL = 44001; // 認證信息失敗 // 信息代碼 private int errno; // 返回信息 private String errmsg; // 返回內容 private Object data; /** * 返回錯誤信息 * @param errno * @param errmsg */ public void fail(int errno, String errmsg) { this.errno = errno; this.errmsg = errmsg != null ? errmsg : ""; this.data = ""; // 總體錯誤 if (errno == ERROR_PARAM_INVALID) { this.errmsg = "參數不合法"; } else if (errno == ERROR_AUTH_FAIL) { this.errmsg = "信息認證失敗"; } } /** * 分頁數據查詢 * * @param list 業務數據集合 * @param count 總條數 * @param current 當前頁碼 * @param pageSize 每頁數量 */ public void setPageData(List list, Integer count, Integer current, Integer pageSize) { HashMap<String, Object> data = new HashMap<>(); data.put("totalAmount", count); // 符合條件的總條數 data.put("current", current); // 當前頁碼 data.put("amount", (count + pageSize - 1) / pageSize); // 總頁數(向上取整) // 容錯數組類型 if (list != null) { data.put("data", list); // 業務數據 } else { data.put("data", new ArrayList<>()); // 空業務數據 } this.data = data; } /** * 返回成功信息 * @param data */ public void success(Object data) { this.errno = 0; this.errmsg = ""; this.data = data; } public int getErrno() { return errno; } public void setErrno(int errno) { this.errno = errno; } public String getErrmsg() { return errmsg; } public void setErrmsg(String errmsg) { this.errmsg = errmsg; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } }
好了,基礎工程完活。