[Cadre Hasor] SpringBoot intègre la configuration et la résolution de problèmes de l'outil d'interface sans code Dataway (y compris l'instruction de création de table GreenPlum, le code source de démonstration, la description du test)

Cet article a participé à l'événement "Newcomer Creation Ceremony" pour commencer ensemble la route de la création d'or.

Quoi

Description du site officiel :

  1. Dataway est un outil de configuration d'interface pour les applications basées sur les capacités d'agrégation de services DataQL. Il permet aux utilisateurs de configurer une interface qui répond à leurs besoins sans développer de code. Toute l'interface est configurée, testée, fumée, publiée. Le guichet unique se fait via l'interface utilisateur fournie par Dataway. L'interface utilisateur sera fournie sous la forme d'un package Jar et intégrée à l'application et partagera le même port http avec l'application.L'application n'a pas besoin d'ouvrir un nouveau port de gestion pour Dataway.
  2. L'avantage de ce mode d'intégration en ligne est que la plupart des anciens projets peuvent directement appliquer Dataway sans intrusion. Cela améliore l'efficacité itérative des anciens projets et réduit considérablement le coût de R&D des projets d'entreprise.
  3. L'outil Dataway fournit des capacités de configuration DataQL. Cette évolution du modèle de R&D permet de délivrer un nombre considérable de scénarios d'évolution de la demande avec un seul paramétrage. Cela évite une série de tâches de développement allant de l'accès aux données aux interfaces frontales, telles que Mapper, BO, VO, DO, DAO, Service et Controller ne sont pas nécessaires.
  4. Dataway est membre de l'écosystème Hasor, donc la première chose à faire lors de l'utilisation de Dataway au printemps est de connecter les deux écosystèmes. Nous avons intégré Hasor et Spring Boot selon la méthode préconisée dans la documentation officielle .

utiliser

1. Dépendance

Version SpringBoot : 2.5.0 [seules les principales dépendances sont publiées ici]

		 <!--hasor核心依赖-->
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-spring</artifactId>
            <version>4.2.5</version>
        </dependency>
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-dataway</artifactId>
            <version>4.2.5</version>
        </dependency>
        <!--p6spy 打印执行的SQL语句-->
        <dependency>
            <groupId>com.github.gavlyukovskiy</groupId>
            <artifactId>p6spy-spring-boot-starter</artifactId>
            <version>1.7.1</version>
        </dependency>
        <!--数据库相关-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.jdbc</groupId>
            <artifactId>greenplum</artifactId>
            <version>5.1.4</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
复制代码

2. Configuration

[Question 1] : caractères chinois tronqués affichés sur l'interface. [Solution 1] : Configurez [servlet.encoding.charset] et [servlet.encoding.force]

server:
  port: 8088
  servlet:
    encoding:
      charset: utf-8
      force: true
spring:
  application:
    name: dataWay-demo
 # 数据源配置
  datasource:
    url: jdbc:pivotal:greenplum://xxx.xx.xxx.xxx:2345;DatabaseName=gpdb
    username: gpadmin
    password: gpadmin
    driver-class-name: com.pivotal.jdbc.GreenplumDriver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 3
      min-idle: 3
      max-active: 10
      max-wait: 60000
      stat-view-servlet:
        login-username: admin
        login-password: admin
# p6spy配置
decorator:
  datasource:
    p6spy:
      logging: slf4j
      log-file: syp.log
      log-format: executionTime:%(executionTime) | sql:%(sqlSingleLine)
# dataWay核心配置
# 启用 Dataway 功能(默认不启用)
HASOR_DATAQL_DATAWAY: true
# 开启 ui 管理功能(注意生产环境必须要设置为 false,否则会造成严重的生产安全事故)
HASOR_DATAQL_DATAWAY_ADMIN: true
# (可选)API工作路径
HASOR_DATAQL_DATAWAY_API_URL: /api/
# (可选)ui 的工作路径,只有开启 ui 管理功能后才有效
HASOR_DATAQL_DATAWAY_UI_URL: /interface-ui/
复制代码

3. Initialisation des données

Voici la base de données SQL d'initialisation pour MySQL :

CREATE TABLE interface_info (
  api_id          varchar(64)  NOT NULL COMMENT 'ID',
  api_method      varchar(12)  NOT NULL COMMENT 'HttpMethod:GET、PUT、POST',
  api_path        varchar(512) NOT NULL COMMENT '拦截路径',
  api_status      varchar(4)   NOT NULL COMMENT '状态:-1-删除, 0-草稿,1-发布,2-有变更,3-禁用',
  api_comment     varchar(255) NOT NULL COMMENT '注释',
  api_type        varchar(24)  NOT NULL COMMENT '脚本类型:SQL、DataQL',
  api_script      mediumtext   NOT NULL COMMENT '查询脚本:xxxxxxx',
  api_schema      mediumtext   NOT NULL COMMENT '接口的请求/响应数据结构',
  api_sample      mediumtext   NOT NULL COMMENT '请求/响应/请求头样本数据',
  api_option      mediumtext   NOT NULL COMMENT '扩展配置信息',
  api_create_time varchar(32)  NOT NULL COMMENT '创建时间',
  api_gmt_time    varchar(32)  NOT NULL COMMENT '修改时间',
  PRIMARY KEY (api_id),
  UNIQUE KEY uk_interface_info (api_path)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Dataway 中的API';

CREATE TABLE interface_release (
  pub_id           varchar(64)  NOT NULL COMMENT 'Publish ID',
  pub_api_id       varchar(64)  NOT NULL COMMENT '所属API ID',
  pub_method       varchar(12)  NOT NULL COMMENT 'HttpMethod:GET、PUT、POST',
  pub_path         varchar(512) NOT NULL COMMENT '拦截路径',
  pub_status       varchar(4)   NOT NULL COMMENT '状态:-1-删除, 0-草稿,1-发布,2-有变更,3-禁用',
  pub_comment      varchar(255) NOT NULL COMMENT '注释',
  pub_type         varchar(24)  NOT NULL COMMENT '脚本类型:SQL、DataQL',
  pub_script       mediumtext   NOT NULL COMMENT '查询脚本:xxxxxxx',
  pub_script_ori   mediumtext   NOT NULL COMMENT '原始查询脚本,仅当类型为SQL时不同',
  pub_schema       mediumtext   NOT NULL COMMENT '接口的请求/响应数据结构',
  pub_sample       mediumtext   NOT NULL COMMENT '请求/响应/请求头样本数据',
  pub_option       mediumtext   NOT NULL COMMENT '扩展配置信息',
  pub_release_time varchar(32)  NOT NULL COMMENT '发布时间(下线不更新)',
  PRIMARY KEY (pub_id),
  KEY idx_interface_release_api  (pub_api_id),
  KEY idx_interface_release_path (pub_path)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 发布历史。';
create index idx_interface_release on interface_release (pub_api_id);
复制代码

【问题二】:> 1071 - Specified key was too long; max key length is 767 bytes 【解决二】:解决:调整相应字段的长度。也可以参考这篇博文

这里再提供以下GreenPlum数据库的初始化SQL:

CREATE TABLE interface_info (
	api_id VARCHAR ( 64 ),
	api_method VARCHAR ( 12 ),
	api_path VARCHAR ( 512 ),
	api_status VARCHAR ( 4 ),
	api_comment VARCHAR ( 255 ),
	api_type VARCHAR ( 24 ),
	api_script TEXT,
	api_schema TEXT,
	api_sample TEXT,
	api_option TEXT,
	api_create_time VARCHAR ( 32 ),
	api_gmt_time VARCHAR ( 32 ) 
);
CREATE TABLE interface_release (
	pub_id VARCHAR ( 64 ),
	pub_api_id VARCHAR ( 64 ),
	pub_method VARCHAR ( 12 ),
	pub_path VARCHAR ( 512 ),
	pub_status VARCHAR ( 4 ),
	pub_comment VARCHAR ( 255 ),
	pub_type VARCHAR ( 24 ),
	pub_script TEXT,
	pub_script_ori TEXT,
	pub_schema TEXT,
	pub_sample TEXT,
	pub_option TEXT,
	pub_release_time VARCHAR ( 32 ) 
);
CREATE INDEX idx_interface_release ON interface_release ( pub_api_id );
复制代码

4.数据源初始化

Spring Boot 和 Hasor 本是两个独立的容器框架,做整合之后为了使用 Dataway 的能力需要把 Spring 中的数据源设置到 Hasor 中。首先新建一个 Hasor 的 模块,并且将其交给 Spring 管理。然后把数据源通过 Spring 注入进来。

@DimModule
@Component
public class ExampleModule implements SpringModule {
    @Autowired
    private DataSource dataSource = null;
    @Override
    public void loadModule(ApiBinder apiBinder) throws Throwable {
        apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));
    }
}
复制代码

5.启动类添加注解

两个注解 @EnableHasor() 和 @EnableHasorWeb()

@EnableHasor()
@EnableHasorWeb()
@SpringBootApplication(scanBasePackages = { "net.example.hasor" })
public class ExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}
复制代码

应用在启动过程中会看到 Hasor Boot 的欢迎信息

6.测试

Accédez au front-end selon le chemin de travail de l'interface utilisateur configuré http://localhost:8088/interface-ui/ , le compte et le mot de passe sont tous deux admin : Veuillez ajouter une description de l'imagela page est brièvement expliquée [vous pouvez l'utiliser] : Veuillez ajouter une description de l'imageDataway fournit 2 modes de langue , vous pouvez utiliser puissant Vous pouvez également utiliser directement le langage SQL (dans Dataway, le langage SQL sera également converti en DataQL pour l'exécution.) Ajoutez un DataQL et testez : Veuillez ajouter une description de l'imageCeci n'est qu'une simple introduction. Le développement de l'interface doit être personnalisé selon l'entreprise, et l'application des scénarios Dataway doit également être envisagée. Pour plus de détails sur le développement lié à DataQL et SQL, veuillez vous référer au document officiel [DataQL Aggregate Query Engine SQL Executor] et enfin mettre quelques liens utiles : Dataway official manuel : www.hasor.net/web/dataway… Dataway est sur OSC L'adresse du projet sur le site Web, bienvenue à collecter : www.oschina.net/p/dataway Adresse du manuel DataQL : www.hasor.net/web/dataql/ … Page d'accueil du projet Hasor : www.hasor.net/web/index.h…

Je suppose que tu aimes

Origine juejin.im/post/7085355199836979208
conseillé
Classement