美文网首页技术初心
简易可配置的查询接口应用框架设计

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

作者: triplestudio | 来源:发表于2020-07-03 18:21 被阅读0次

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


框架结构

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. 约定

  • 资源标识以 - 作为节分隔符
  • 资源标识第一节用于表示连接,它表明了使用哪个数据库连接来查询
  • 资源标识第一节在 api 接口的路径路由中独立出来,路由形如 /{第一节连接}/{资源标识其它部分}
  • 使用参数 page 表示页索引,size 表示页记录数
  • 所有其它查询参数由 Query String 给出。
  • 上下文参数:用户属性中可配置其相关的上下文参数值,用户标识总包含在上下文参数中

4. 数据库连接配置

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

  • 连接标识(作为资源标识的前缀)
  • 数据库类型
    sqlserver/mysql/postgresql/...
  • 连接字符串。

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 模型数据接口化

  • 取得账户信息
    GetAcctInfo(string acct_no)
  • 判断是否有权访问
    HasPermission(string acct_no, string service_id)
  • 取得连接信息
    GetLinkInfo(string link_no)

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
)
  • 存储接口
    Log(type, title, content)

8. 具体实现

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

相关文章

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

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

  • Java接口处理以及异常处理

    接口在Andriod中的应用 回调函数:事件监听 Asdl...... 框架设计 框架设计的时候 接口处理 -声明...

  • Retrofit基本使用

    Retrofit是由著名的 Square 公司开源的一个基于OkHttp实现网络请求的框架,以其简易的接口配置、强...

  • Django新手配置教程

    Django 框架在服务器上的配置,以及简易web应用 安装 建议在虚拟环境中来运行,以下的应用是基于Centos...

  • JMeter参数化之__CSVRead()

    一、__CSVRead() ▲ 配置项 二、应用案例 这里以前面介绍过的查询被购买的商品总金额接口为例。 ▲ 参数...

  • Hibernate框架的查询方式

    Hibernate框架的查询方式 Query查询接口 具体的查询代码如下1.查询所有记录/Query query ...

  • bootstrap实战-读书笔记

    bootstrap框架是以移动设备优先的设计理念,配合媒介查询实现各个屏幕的设计。 *less文件可实现按需加载,...

  • SpringBoot制作简易查询接口

    说明 不会搭建项目的同学请点开我个人中心看我第一篇springboot的博客 前两章我们做了登陆注册,按照程序下边...

  • RPC框架的最简单实现

    一个最简单的RPC框架实现包含暴露服务、引用服务、Socket通讯三部分。 RPC框架简易实现 接口 接口实现 服...

  • 评论评价服务进阶之路

    初识商城评论 第一个Java服务,面临Java技术框架、服务器JVM配置、跨语言接口设计等等挑战。接口协定为H...

网友评论

    本文标题:简易可配置的查询接口应用框架设计

    本文链接:https://www.haomeiwen.com/subject/avoofktx.html