配置 SQL 接口

Restd 除了之前介绍的自动为实体生成基础增删改查接口的功能外,为了适应更广泛的开发需求,Restd 还支持基于 SQL 自动生成接口。

1. 配置

1.1. 配置 SQL

假设我们按照之前 SQL 配置章节介绍的那样在 conf/sqls.xml 文件中配置了这样一条 SQL :

<?xml version="1.0" encoding="UTF-8"?>
<sqls xmlns="http://www.leapframework.org/schema/sqls">
    <command key="user.all">
        select * from User
        where name = #name#
        {? and age > #age# }
    </command>
</sqls>

1.2. 配置 Restd

然后我们可以在 conf/apis.xml 文件中配置 Restd 根据这条 SQL 自动生成接口:

<?xml version="1.0" encoding="UTF-8"?>
<apis xmlns="http://www.leapframework.org/schema/webapi">
    <api name="api" base-path="/" restd-enabled="true">
        <restd>
            <model name="User">
                <sql-operation name="testAll" sql-key="user.all"/>
            </model>
        </restd>
    </api>
</apis>

1.3. 生成效果

启动工程,我们可以在启动完成时控制台打印的路由表中看到自动生成的这个接口:

METHOD  PATH              ACTION                                                  DEFAULT VIEW
------  ---------------   -----------------------------------------------------   ------------------------------
...
GET     /user/test_all    SqlOperationProcessor$$Lambda$134/1322556641@60c5d682   (none)
...

另外自动生成的接口也会自动生成 swagger 文档。

我们访问应用的 /swagger.json 可以看到接口中增加了下面这条:

2. 接口规则

在路由表中我们可以看到生成接口的 HTTP METHOD 类型是 GET,这是 Leap 解析 SQL 根据 SQL 语句的类型设置的。

SQL 语句类型对应 HTTP METHOD 规则如下:

  • select 语句对应 GET
  • insert 语句对应 POST
  • update 语句对应 PATCH
  • delete 语句对应 DELETE

再看路由表中的 PATH ,可以看到 /user/test_all 的组成是实体名前缀加 sql-operation 的 name 属性,且这个 name 属性默认会进行小写下划线风格的转换

3. 参数规则

对比生成的文档以及上面所写的 SQL ,我们可以发现 Leap 会自动帮我们处理接口支持的参数。

具体处理规则如下:

  • SQL 中所有的命名参数占位符都会作为生成接口的接口参数;
  • SQL 中普通的命名参数占位符在作为生成接口参数时是必传的;
  • 在 SQL 动态语句中的命名参数占位符在作为生成接口参数时是可选的;
  • 目前生成接口参数的类型只支持 string 类型。
上一篇:配置实体接口 下一篇:Restd 安全

results matching ""

    No results matching ""