作者 | 版本 | 時間 | 內容 | 備注 |
Allen | V1.0.0 | 2021/08/19 | 初稿完成 | |
Allen | V1.0.1 | 2021/08/22 | 添加常見問題 | |
1.流程說明
一個接口的開發,比如Java用SpringBoot,Mybatis來開發一般來說就像下面這個流程
部署上這個項目后,流程變成了這樣
如果使用 apijson-framework,還可進一步簡化流程
2.本地開發
2.1 本地安裝
APIJSON為后端提供如下版本,本文選擇APIJSONBoot進行本地調試;
2.1.1 JDBC Demo
APIJSONDemo 為 APIJSON + SpringBoot 的最簡單的初級使用 Demo;
APIJSONBoot 為 APIJSON + SpringBoot 的接近生產環境成品的 Demo;
APIJSONFinal 為 APIJSON + JFinal 的接近生產環境成品的 Demo。
2.1.2 連接池 Demo
APIJSONDemo-Druid 為 APIJSON + SpringBoot + Druid 的簡單初級使用 Demo;
APIJSONDemo-HikariCP 為 APIJSON + SpringBoot + HikariCP 的簡單初級使用 Demo;
APIJSONBoot-MultiDataSource 為 APIJSON + SpringBoot + Druid + HikariCP 的接近生產環境成品的多數據源 Demo。
2.2 項目地址
Github:GitHub - APIJSON/APIJSON-Demo: 騰訊 APIJSON 各種語言、各種框架 的 使用示例項目、上手文檔、測試數據 SQL 文件 等。Demo projects with document and SQL files for Tencent APIJSON with different programming languages and different frameworks.
代碼獲取:
git@github.com:APIJSON/APIJSON-Demo.git
或者
https://github.com/APIJSON/APIJSON-Demo.git
2.3 本地導入
2.3.1 代碼獲取
2.3.2 工程添加
2.3.2.1 后端工程目錄
2.3.2.2 點擊工程設置
2.3.2.3 添加模塊(Modules)
2.3.2.4 選擇需要添加的模塊
這里選擇APIJSONBoot項目作為演示
2.3.2.5 選擇以Maven模式引入
2.3.2.6 添加JDK
這里選擇1.8
至此項目引入完成
2.2 庫表創建
2.2.1 數據庫腳本
數據庫腳本按文件夾分,MySQL相關腳本在MySQL目錄下,其中包含測試表
2.2.2 核心庫創建
2.2.2.1 Access
-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
--
-- Host: apijson.cn Database: sys
-- ------------------------------------------------------
-- Server version 5.7.33-log/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
-- Table structure for table `Access`
--DROP TABLE IF EXISTS `Access`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `Access` (`id` bigint(15) NOT NULL AUTO_INCREMENT,`debug` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否為調試表,只允許在開發環境使用,測試和線上環境禁用',`name` varchar(50) NOT NULL COMMENT '實際表名,例如 apijson_user',`alias` varchar(20) DEFAULT NULL COMMENT '外部調用的表別名,例如 User',`get` varchar(100) NOT NULL DEFAULT '["UNKNOWN", "LOGIN", "CONTACT", "CIRCLE", "OWNER", "ADMIN"]' COMMENT '允許 get 的角色列表,例如 ["LOGIN", "CONTACT", "CIRCLE", "OWNER"]\n用 JSON 類型不能設置默認值,反正權限對應的需求是明確的,也不需要自動轉 JSONArray。\nTODO: 直接 LOGIN,CONTACT,CIRCLE,OWNER 更簡單,反正是開發內部用,不需要復雜查詢。',`head` varchar(100) NOT NULL DEFAULT '["UNKNOWN", "LOGIN", "CONTACT", "CIRCLE", "OWNER", "ADMIN"]' COMMENT '允許 head 的角色列表,例如 ["LOGIN", "CONTACT", "CIRCLE", "OWNER"]',`gets` varchar(100) NOT NULL DEFAULT '["LOGIN", "CONTACT", "CIRCLE", "OWNER", "ADMIN"]' COMMENT '允許 gets 的角色列表,例如 ["LOGIN", "CONTACT", "CIRCLE", "OWNER"]',`heads` varchar(100) NOT NULL DEFAULT '["LOGIN", "CONTACT", "CIRCLE", "OWNER", "ADMIN"]' COMMENT '允許 heads 的角色列表,例如 ["LOGIN", "CONTACT", "CIRCLE", "OWNER"]',`post` varchar(100) NOT NULL DEFAULT '["OWNER", "ADMIN"]' COMMENT '允許 post 的角色列表,例如 ["LOGIN", "CONTACT", "CIRCLE", "OWNER"]',`put` varchar(100) NOT NULL DEFAULT '["OWNER", "ADMIN"]' COMMENT '允許 put 的角色列表,例如 ["LOGIN", "CONTACT", "CIRCLE", "OWNER"]',`delete` varchar(100) NOT NULL DEFAULT '["OWNER", "ADMIN"]' COMMENT '允許 delete 的角色列表,例如 ["LOGIN", "CONTACT", "CIRCLE", "OWNER"]',`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',`detail` varchar(1000) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `name_UNIQUE` (`name`),UNIQUE KEY `alias_UNIQUE` (`alias`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COMMENT='權限配置(必須)';
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `Access`
--LOCK TABLES `Access` WRITE;
/*!40000 ALTER TABLE `Access` DISABLE KEYS */;
INSERT INTO `Access` VALUES (1,0,'Access',NULL,'[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[]','[]','[]','2019-07-21 12:21:36',NULL),(2,1,'Table',NULL,'[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[]','[]','[]','2018-11-28 16:38:14',NULL),(3,1,'Column',NULL,'[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[]','[]','[]','2018-11-28 16:38:14',NULL),(4,0,'Function',NULL,'[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[]','[]','[]','2018-11-28 16:38:15',NULL),(5,0,'Request',NULL,'[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[]','[]','[]','2018-11-28 16:38:14',NULL),(6,0,'Response',NULL,'[\"UNKNOWN\", \"LOGIN\", \"CONTACT\", \"CIRCLE\", \"OWNER\", \"ADMIN\"]','[\"UNKNOWN\", \"LOGIN\", \