日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

以下文章來(lái)源于macrozheng ,作者夢(mèng)想de星空

SpringBoot的可視化接口開(kāi)發(fā)工具

 

macrozheng

專注JAVA技術(shù)分享,涵蓋SpringBoot、SpringCloud、Docker、中間件等實(shí)用技術(shù),作者Github開(kāi)源項(xiàng)目mall(40K+Star)。

SpringBoot的可視化接口開(kāi)發(fā)工具

 


 

作為Java后端開(kāi)發(fā),平時(shí)開(kāi)發(fā)API接口的時(shí)候經(jīng)常需要定義Controller、Service、Dao、MApper、XML、VO等Java對(duì)象。我們甚至使用代碼生成器來(lái)通過(guò)數(shù)據(jù)庫(kù)生成這些代碼!有沒(méi)有什么辦法可以讓我們不寫(xiě)這些代碼,直接操作數(shù)據(jù)庫(kù)生成API接口呢?今天給大家推薦一款工具magic-api,來(lái)幫我們實(shí)現(xiàn)這個(gè)小目標(biāo)!

magic-api簡(jiǎn)介

magic-api是一個(gè)基于Java的接口快速開(kāi)發(fā)框架,編寫(xiě)接口將通過(guò)magic-api提供的UI界面完成,自動(dòng)映射為HTTP接口,無(wú)需定義Controller、Service、Dao、Mapper、XML、VO等Java對(duì)象。

使用

下面我們來(lái)波實(shí)戰(zhàn),熟悉下使用magic-api來(lái)開(kāi)發(fā)API接口。

在SpringBoot中使用

magic-api原生支持SpringBoot,可與SpringBoot無(wú)縫整合。

  • 首先在pom.xml中添加magic-api相關(guān)依賴;
<!--接口快速開(kāi)發(fā)框架 magic-api-->
<dependency>
    <groupId>org.ssssssss</groupId>
    <artifactId>magic-api-spring-boot-starter</artifactId>
    <version>1.0.2</version>
</dependency>
  • 在配置文件application.yml中添加數(shù)據(jù)源及magic-api相關(guān)配置;
spring:
  datasource:
    url: jdbc:MySQL://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

magic-api:
  # 配置api管理頁(yè)面入口
  web: /magic/web
  # 配置存儲(chǔ)方式
  resource:
    # 配置接口資源存儲(chǔ)位置,可選file、database、redis
    type: database
    # 存儲(chǔ)表名
    tableName: magic_api_file
    # 使用database、redis存儲(chǔ)時(shí)的key前綴
    prefix: /magic-api
    # 是否是只讀模式
    readonly: false
  # 啟用駝峰命名轉(zhuǎn)換
  sql-column-case: camel
  # 分頁(yè)配置
  page-config:
    # 頁(yè)大小的請(qǐng)求參數(shù)名稱
    size: size
    # 頁(yè)碼的請(qǐng)求參數(shù)名稱
    page: page
    # 未傳頁(yè)碼時(shí)的默認(rèn)頁(yè)碼
    default-page: 1
    # 未傳頁(yè)大小時(shí)的默認(rèn)頁(yè)大小
    default-size: 10
  • 在MySQL中創(chuàng)建數(shù)據(jù)庫(kù)magic_api,由于我們配置了使用數(shù)據(jù)庫(kù)存儲(chǔ)接口資源,所以需要先創(chuàng)建magic_api_file表;
CREATE TABLE `magic_api_file`
(
  `id`           bigint(255) NOT NULL AUTO_INCREMENT,
  `file_path`    varchar(255) DEFAULT NULL,
  `file_content` text,
  PRIMARY KEY (`id`)
)
  • 再創(chuàng)建pms_brand表,用于測(cè)試;
CREATE TABLE `pms_brand` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `big_pic` varchar(255) DEFAULT NULL,
  `brand_story` varchar(255) DEFAULT NULL,
  `factory_status` bit(1) DEFAULT NULL,
  `first_letter` varchar(255) DEFAULT NULL,
  `logo` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `product_comment_count` int(11) DEFAULT NULL,
  `product_count` int(11) DEFAULT NULL,
  `show_status` bit(1) DEFAULT NULL,
  `sort` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
  • 最后啟動(dòng)項(xiàng)目,訪問(wèn)magic-api的UI界面,訪問(wèn)地址:http://localhost:8080/magic/web
SpringBoot的可視化接口開(kāi)發(fā)工具

 

增刪改查

接下來(lái)我們將以商品品牌管理為例,體驗(yàn)下使用magic-api開(kāi)發(fā)接口的快感!使用magic-api開(kāi)發(fā)API接口,僅需在界面中使用magic-script腳本即可。

  • 首先我們來(lái)寫(xiě)個(gè)新增接口,先創(chuàng)建一個(gè)分組,然后在分組中創(chuàng)建一個(gè)新增接口,在編輯框中輸入如下腳本;
// 使用body對(duì)象可以直接獲取請(qǐng)求body中的參數(shù)
return db.table('pms_brand').insert(body);
  • 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/create,請(qǐng)求參數(shù)放在請(qǐng)求body中;
SpringBoot的可視化接口開(kāi)發(fā)工具

 

  • 再來(lái)個(gè)根據(jù)ID查詢的接口,在編輯框中輸入如下腳本;
// 路徑變量從path對(duì)象中獲取
return db.table('pms_brand')
    .where()
    .eq('id',path.id)
    .selectOne();
  • 在底部的接口信息中進(jìn)行如下配置,GET請(qǐng)求,請(qǐng)求路徑為/detail/{id},請(qǐng)求參數(shù)放在路徑變量中;
SpringBoot的可視化接口開(kāi)發(fā)工具

 

  • 再來(lái)個(gè)修改的接口,在編輯框中輸入如下腳本;
return db.table('pms_brand').primary('id',body.id).update(body);
  • 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/update,請(qǐng)求參數(shù)放在請(qǐng)求body中;
SpringBoot的可視化接口開(kāi)發(fā)工具

 

  • 再來(lái)個(gè)分頁(yè)查詢查詢的接口,在編輯框中輸入如下腳本;
return db.table('pms_brand').page();
  • 在底部的接口信息中進(jìn)行如下配置,GET請(qǐng)求,請(qǐng)求路徑為/page,請(qǐng)求參數(shù)放在請(qǐng)求參數(shù)中(由于已經(jīng)在application.yml中配置好了分頁(yè)參數(shù),可直接使用);
SpringBoot的可視化接口開(kāi)發(fā)工具

 

  • 再來(lái)個(gè)根據(jù)ID刪除的接口,在編輯框中輸入如下腳本,刪除只能使用update,這設(shè)計(jì)有點(diǎn)...
return db.update('delete from pms_brand where id=#{id}'); 
  • 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/delete/{id},請(qǐng)求參數(shù)放在路徑變量中;
SpringBoot的可視化接口開(kāi)發(fā)工具

 

參數(shù)驗(yàn)證

我們可以通過(guò)斷言模塊assert來(lái)進(jìn)行參數(shù)驗(yàn)證。

  • 比如新增品牌的時(shí)候名稱和首字母不能為空,在編輯框中輸入如下腳本;
import assert;  //導(dǎo)入斷言模塊
//驗(yàn)證不通過(guò)時(shí),會(huì)終止運(yùn)行
assert.notEmpty(body.name,400,'名稱不能為空!');
assert.notEmpty(body.firstLetter,400,'首字母不能為空!');
return db.table('pms_brand').insert(body);
  • 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/test,請(qǐng)求參數(shù)放在請(qǐng)求body中;
SpringBoot的可視化接口開(kāi)發(fā)工具

 

  • 當(dāng)我們不添加name字段時(shí),調(diào)用接口會(huì)返回我們自己定義的錯(cuò)誤信息和狀態(tài)碼。
SpringBoot的可視化接口開(kāi)發(fā)工具

 

結(jié)果轉(zhuǎn)換

我們可以使用map方法對(duì)查詢數(shù)據(jù)進(jìn)行轉(zhuǎn)換,返回我們想要的數(shù)據(jù)。

  • 比如我們想將showStatus轉(zhuǎn)換為中文說(shuō)明,并只返回三個(gè)需要的字段,在編輯框中輸入如下腳本;
var list = db.table('pms_brand').select();
return list.map((item)=>{
    name : item.name,
    firstLetter : item.firstLetter,
    showStatus : item.showStatus? '不顯示' : '顯示'
});
  • 訪問(wèn)該接口,在執(zhí)行結(jié)果中可以發(fā)現(xiàn),返回結(jié)果已經(jīng)轉(zhuǎn)換。
SpringBoot的可視化接口開(kāi)發(fā)工具

 

使用事務(wù)

在我們使用Java開(kāi)發(fā)接口的時(shí)候,少不了用到事務(wù),當(dāng)然magic-api也是支持事務(wù)的。使用db.transaction()方法即可,支持自動(dòng)事務(wù)和手動(dòng)事務(wù)。

  • 還是以修改品牌為例,先查詢是否存在,如果存在則更新;
import assert; 
var val = db.transaction(()=>{
    var exist = db.table('pms_brand').where().eq('id',body.id).selectOne();
    assert.notNull(exist,404,'找不到該品牌!');
    db.table('pms_brand').primary('id',body.id).update(body);
    return v2;
});
return val;
  • 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/test,請(qǐng)求參數(shù)放在請(qǐng)求body中;
SpringBoot的可視化接口開(kāi)發(fā)工具

 

集成Swagger

寫(xiě)了那么多接口,都是在magic-api的界面中進(jìn)行調(diào)試的。如果你習(xí)慣使用Swagger,magic-api也可以和Swagger進(jìn)行無(wú)縫整合。

  • 首先在pom.xml中添加Swagger相關(guān)依賴;
<dependencies>
    <!--Swagger-UI API文檔生產(chǎn)工具-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
</dependencies>
  • 在配置文件application.yml中添加Swagger相關(guān)配置;
magic-api:
  # 集成Swagger配置
  swagger-config:
    # 文檔名稱
    name: MagicAPI 測(cè)試接口
    # 文檔標(biāo)題
    title: MagicAPI Swagger Docs
    # 文檔描述
    description: MagicAPI 測(cè)試接口信息
    # 文檔版本號(hào)
    version: 1.0
    # 文檔資源位置
    location: /v2/api-docs/magic-api/swagger2.json
  • 訪問(wèn)Swagger界面即可查看我們?cè)趍agic-api中寫(xiě)的接口了,訪問(wèn)地址:http://localhost:8080/swagger-ui.html
SpringBoot的可視化接口開(kāi)發(fā)工具

 

總結(jié)

magic-api是個(gè)很有意思的框架,可以通過(guò)在UI界面中使用簡(jiǎn)單的腳本,進(jìn)行API接口的開(kāi)發(fā)。不過(guò)作為一款小眾框架,magic-api還有很長(zhǎng)一段路要走!

參考資料

官方文檔:https://ssssssss.org/

項(xiàng)目源碼地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-magic-api

分享到:
標(biāo)簽:SpringBoot
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定