技术初心

简易可配置的查询接口应用框架设计

2020-07-03  本文已影响0人  triplestudio

应用框架设计的目标是:使得可以无代码、全配置快速制作可供其它应用使用的数据查询接口。


框架结构

1. 资源定义

应用的主要职能是查询数据,这里的终极资源就是每个查询语句
资源标识遵循一定的约定,如规定标识前缀等,有如 dba-test
查询语句可以采用xml配置的方式,或其它存储形式。要求语句可动态组成,支持动态参数。

<?xml version="1.0" encoding="utf-8" ?>
<services> 
  <service id="dba-test">
    <![CDATA[
    sql.Append(@"select * from test where id=@id");    
    ]]>
  </service>
</services>

2. 权限与鉴权

权限以资源为粒度,通过对用户可访问资源标识的配置,来控制鉴权。
可设定不受权限约束的超级管理员账号,对资源标识的配置可以采用通配符,如 dba-*

3. 约定

4. 数据库连接配置

数据库连接通道的相关必要属性:

5. 应用模型及其接口

5.1 模型定义

CREATE TABLE acct_info(
    acct_no varchar(40) NOT NULL primary key,
    acct_pass varchar(40) NOT NULL,
    acct_name varchar(80) NOT NULL,
    is_super char(1) NOT NULL,
    token varchar(255) NULL,
    token_at datetime NULL,
    state char](1) NOT NULL,
    role_id varchar(20) NULL,
    home_path varchar(255) NULL,
    note varchar(255) NULL,
    point int NOT NULL DEFAULT 0
)
参数名 必选 类型 说明
acct_no string 用户账号
acct_pass string 密码
is_super string Y/N 是否超级管理员
acct_name string 名称
token string 登录授权码
token_at string 登录时间
state string Y/N/...
...... string 其它辅助属性
create table acct_context (
    acct_no varchar(40), 
    k varchar(40), 
    v varchar(255), 
    state char(1) not null, 
    primary key (acct_no, k)
)
参数名 必选 类型 说明
acct_no string 用户账号
k string 参数名
v string 参数值
state string Y/N 表示是否启用
create table link_info (
    link_no varchar(40) primary key, 
    link_name varchar(80) not null, 
    db_type varchar(20) not null,
    connect_string varchar(255) not null, 
    state char(1) not null
);
参数名 必选 类型 说明
link_no string 连接标识
link_name string 连接名称
db_type string sqlserver/mysql/postgresql/... 数据库类型
connect_string string 连接字符串
state string Y/N 表示是否启用
create table link_info (
    link_no varchar(40) primary key, 
    link_name varchar(80) not null, 
    db_type varchar(20) not null,
    connect_string varchar(255) not null, 
    state char(1) not null
);
参数名 必选 类型 说明
acct_no string 用户账号
service_id string 查询的资源标识,可使用正则表达式写法
state string Y/N 表示是否启用

5.2 模型数据接口化

6. API 接口定义规约

成功时
{
    "err_code" : 200,
    "err_msg"  : "success",
    "data" : [...]  // 需要的相关数据
}

当分页时,增加 pagerowcountpagecount 属性。

失败时

err_code 为 -1 表示未登录或登录过期无效等,101 表示失败

{
    "err_code" : 101,    
    "err_msg"  : "原因描述" 
}

7. 日志

接口的调用记录日志。

create table g_log
(
    log_id bigint identity(1,1) NOT NULL primary key,
    log_type varchar(200) NOT NULL,
    log_title varchar(200) NOT NULL,
    log_content varchar(max) NOT NULL,
    log_at datetime NOT NULL,
    log_note varchar(max),
    day_string varchar(8) NOT NULL
)

8. 具体实现

具体实现时,大体思路结构不变,细节有很多调整,后期慢慢分享。

上一篇 下一篇

猜你喜欢

热点阅读