SpringBoot2.1 RESTful API項(xiàng)目腳手架(種子)項(xiàng)目
最近在做一個(gè)大型的J2EE項(xiàng)目,后端語(yǔ)言選擇了Java,理所當(dāng)然的選擇了Spring,使用Spring MVC來(lái)做restful風(fēng)格的api開(kāi)發(fā)很是方便,Spring下面有很多子項(xiàng)目通過(guò)Springboot集成也很舒服。程序員都知道溝通很重要,實(shí)際項(xiàng)目中,往往是各自為戰(zhàn),盡管使用的是相同的框架、工具,編寫(xiě)的代碼卻千差萬(wàn)別,為了統(tǒng)一基礎(chǔ)代碼風(fēng)格,編寫(xiě)了這個(gè)項(xiàng)目種子。
除此之外,在開(kāi)發(fā)一個(gè)Web后端api項(xiàng)目時(shí),通常都會(huì)經(jīng)歷搭建項(xiàng)目、選擇依賴(lài)管理工具、引入基礎(chǔ)包依賴(lài)、配置框架等,為了加快項(xiàng)目的開(kāi)發(fā)進(jìn)度(早點(diǎn)下班)還需要封裝一些常用的類(lèi)和工具,如標(biāo)準(zhǔn)的響應(yīng)結(jié)構(gòu)體封裝、統(tǒng)一異常處理切面、接口簽名認(rèn)證、初始化運(yùn)行方法、輪詢(xún)方法、api版本控制封裝、異步方法配置等。
每次開(kāi)始一個(gè)類(lèi)型的新項(xiàng)目,以上這些步驟又要重復(fù)一遍,雖然能夠?qū)⒗享?xiàng)目拿過(guò)來(lái)刪刪減減達(dá)到目的,但還是很費(fèi)時(shí)費(fèi)力,還容易出問(wèn)題。所以,可以利用面向?qū)ο蟮乃枷?,抽取這類(lèi)Web后端api項(xiàng)目的共同之處封裝成一個(gè)項(xiàng)目種子。以后再開(kāi)發(fā)類(lèi)似的項(xiàng)目,就能直接在這個(gè)項(xiàng)目種子上迭代,減少重復(fù)勞動(dòng)。
項(xiàng)目地址:https://github.com/ocubexo/springboot-restful-starter
簡(jiǎn)介
這是一個(gè)基于SpringBoot 2.1.1 RELEASE,用于搭建RESTful API工程的腳手架,只需三分鐘你就可以開(kāi)始編寫(xiě)業(yè)務(wù)代碼,不再煩惱于構(gòu)建項(xiàng)目與風(fēng)格統(tǒng)一。
快速開(kāi)始
- 構(gòu)建數(shù)據(jù)庫(kù)
- 運(yùn)行
/src/test
下的CodeGenerator.java
進(jìn)行代碼生成 - 開(kāi)始編寫(xiě)業(yè)務(wù)代碼
內(nèi)置功能與使用方法
RESTful風(fēng)格Result生成器
1.成功且不帶數(shù)據(jù)的結(jié)果
// 不帶數(shù)據(jù)的成功結(jié)果 return new Result().success();
返回結(jié)果示例:
{ "code": 200, "message": "Success", "data": null }
2.成功且?guī)Х祷財(cái)?shù)據(jù)的結(jié)果
return new Result().success("Hello,world"); // 當(dāng)然你也可以返回對(duì)象或其他類(lèi)型的數(shù)據(jù) User user = new User(); return new Result().success(user);
返回結(jié)果示例:
{ "code": 200, "message": "Success", "data": "Hello,world" }
或者是:
{ "code": 200, "message": "Success", "data": { "name": "jack", "age": 20 } }
3.錯(cuò)誤結(jié)果:
// fail方法的參數(shù)(錯(cuò)誤代碼,錯(cuò)誤信息) return new Result().fail(10400, "登陸失敗,密碼錯(cuò)誤"); // 你還可以自定義錯(cuò)誤結(jié)果的code return new Result().fail(null, "未登錄", 401);
返回結(jié)果示例:
{ "code": 400, "message": "登陸失敗,密碼錯(cuò)誤", "data": 10400 }
或者:
{ "code": 401, "message": "未登錄", "data": null }
RESTful風(fēng)格的異常接管
// 參數(shù)說(shuō)明(錯(cuò)誤信息, 錯(cuò)誤Code) throw new ServiceException("未登錄", 401); // 你也可以返回錯(cuò)誤代碼 throw new ServiceException(10404, "服務(wù)器維護(hù)中", 404);
返回結(jié)果示例:
{ "code": 401, "message": "未登錄", "data": null }
或者:
{ "code": 404, "message": "服務(wù)器維護(hù)中", "data": 10404 }
基于JWT的認(rèn)證機(jī)制
@Autowired private TokenService tokenService; // 生成Payload Map<String,Object> payload = new HashMap<String,Object>(); payload.put("id",1); // 生成Token tokenService.generate(TokenType.ACCESS, payload, 1); // 格式化Token String token = getYourToken(); tokenService.parse(token); // 返回的結(jié)果是一個(gè)Jwt對(duì)象,詳見(jiàn)JJWT文檔 Auth注解 Auth注解用于獲取當(dāng)前用戶(hù)的Token中的userId,在獲取的同時(shí)會(huì)自動(dòng)校驗(yàn)用戶(hù)Token,若用戶(hù)未登錄則會(huì)拋出未登錄的異常。 // 在controller中使用 @PostMapping("/user/1/edit") public Result edit(@Auth int userId, @ResponseBody sthPosted) { // 根據(jù)ID判斷權(quán)限 }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java 多線(xiàn)程學(xué)習(xí)詳細(xì)總結(jié)
本文主要介紹 Java 多線(xiàn)程的知識(shí)資料,這里整理了詳細(xì)的多線(xiàn)程內(nèi)容,及簡(jiǎn)單實(shí)現(xiàn)代碼,有需要的朋友可以參考下2016-09-09Java防止文件被篡改之文件校驗(yàn)功能的實(shí)例代碼
這篇文章主要介紹了Java防止文件被篡改之文件校驗(yàn)功能,本文給大家分享了文件校驗(yàn)和原理及具體實(shí)現(xiàn)思路,需要的朋友可以參考下2018-11-11一個(gè)JAVA小項(xiàng)目--Web應(yīng)用自動(dòng)生成Word
前段時(shí)間接到一個(gè)Web應(yīng)用自動(dòng)生成Word的需求,現(xiàn)整理了下一些關(guān)鍵步驟拿來(lái)分享一下。2014-05-05SpringBoot2底層注解@ConfigurationProperties配置綁定
這篇文章主要介紹了SpringBoot2底層注解@ConfigurationProperties配置綁定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05IDEA 程序包不存在,找不到符號(hào)但是明明存在對(duì)應(yīng)的jar包(問(wèn)題分析及解決方案)
這篇文章主要介紹了IDEA 程序包不存在,找不到符號(hào)但是明明存在對(duì)應(yīng)的jar包 的解決方案,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08java中l(wèi)ombok的@Data引發(fā)問(wèn)題詳解
這篇文章主要給大家介紹了關(guān)于java中l(wèi)ombok的@Data引發(fā)問(wèn)題的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09springboot?ErrorPageFilter的實(shí)際應(yīng)用詳解
這篇文章主要介紹了springboot?ErrorPageFilter的實(shí)際應(yīng)用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01