• 【DBAPI教程】DBAPI如何使用复杂多层嵌套JSON作为请求参数


    DBAPI如何使用复杂多层嵌套JSON作为请求参数

    DBAPI作为一款后端低代码接口快速开发工具,不仅能实现简单的字段传参给SQL,也可以实现复杂的JSON传参。下面我们就来看一个实际的例子。

    背景需求

    • 假设我们现在MySql有一张GDP表,内容如下:

    在这里插入图片描述

    • 我们的请求参数格式是这样的:
    {
        "province": {
            "name": "广东",
            "cities": [{
                    "name": "深圳",
                    "code": "518000"
                }, {
                    "name": "广州",
                    "code": "510000"
                }
            ]
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 这是一个复杂的嵌套的JSON,那如何才能把参数中的两个城市深圳和广州取出来,作为参数传递给SQL呢?
    • 先定一个目标:查询参数中的城市的GDP。接下来开始操作。

    实操

    • 第1步,创建数据源,将mysql账户地址填上并创建

    图片

    • 第2步,创建一个分组

    在这里插入图片描述

    • 第3步,在分组上创建API

    在这里插入图片描述

    注意在基本信息的Content Type中一定要选择application/json,然后将json参数填入其中。

    在这里插入图片描述

    在执行器中选择刚才创建的数据源,并填写sql,注意sql中的参数我们这样获取:

     #{province.cities[0].name}   #{province.cities[1].name}
    
    • 1

    在这里插入图片描述

    • 保存并发布API

    验证

    • 最后我们来验证数据,我们来到请求测试页面,点击发送请求,可以看到查询到了深圳和广州的数据。完成!

    图片

    • 是不是很方便呢

    解释

    • json取值就是通过“.”符号来取字段值,如果是数组类型,可以用“[下标]”的方式来取出对应的元素。

    扩展

    • 有同学又问了,如果json参数中的cities数组不是2个元素,是3个元素怎么办呢?那SQL不就只能接收2个参数了吗?能否根据参数数组中的个数自动接收参数呢?

    • 当然可以!那就要用到类似Mybatis的动态SQL语法了!我们修改API,修改SQL为以下内容,然后保存并发布API。

    select * from gdp where city in 
    <foreach open="(" close=")" collection="province.cities" separator="," item="city" index="index">
    #{city.name}
    </foreach>
    
    • 1
    • 2
    • 3
    • 4

    图片

    • 接下来修改参数为3个城市,发送请求,可以看到查询结果正确!

    在这里插入图片描述

    • 那么这一段动态SQL如何解释呢

    • collection="province.cities" 表示将province.cities取出来,它是一个数组,对这个数组进行循环遍历

    • item="city"表示循环遍历的时候对每个元素进行命名为city

    • 所以最后取值的时候用#{city.name}来取值

    • 不熟悉的同学可以学习下mybatis动态SQL语法喔!

    总结

    • 作为一款API低代码快速开发工具,DBAPI是不是很方便呢?
    • 欢迎关注DBAPI微信公众号以及官网地址https://www.51dbapi.com

    在这里插入图片描述

  • 相关阅读:
    华为HCIA(六)
    从0开始写一个简单的vite hmr 插件
    R之线性回归模型
    华为机试 - 水仙花数 Ⅰ
    微信点赞测试点
    网格窗帘布能符合NFP92-503法国M2级别要求吗?
    将程序打包镜像并上传到harbor仓库
    没想到吧,Spring中还有一招集合注入的写法
    FPGA片内RAM读写测试实验+逻辑分析仪ila
    JavaScript基础
  • 原文地址:https://blog.csdn.net/qq1032355091/article/details/132938994