
# 【 1822 分页查询列表数据接口】接口文档
**所属平台**: YesApi果创云
**接口地址**: `http://api.yesapi.net/?s=App.Table.FreeQuery`
**请求方式**: POST/GET

## 接口基本信息
- **功能描述**:  查 分页获取列表数据或全部数据，支持字段选择、排序、条件查询，功能强大，是最为常用的数据接口。
- **返回格式**: JSON

## 请求参数说明

### 系统参数（使用Query传递）
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|--------|
| s | string | 必填 | 接口服务名，固定为`App.Table.FreeQuery` |
| app_key | string | 必填 | 应用key，传入`你的app_key` |
| sign | string | 可选 | 公共参数接口签名，其中：                  关闭签名，默认，不需要签名，在接口签名设置关闭或开启接口签名。         静态签名，简单，固定的签名，点击获取。         动态签名，复杂，安全系数高，获取密钥，教程：如何生成签名，下载SDK开发包，在线测试对比签名。         定制签名，支持个性化签名签名算法定制。          |
| uuid | string | 可选 | 公共参数 UUID，当前登录的应用会员ID，即全局唯一用户ID，查看我的应用会员。传递此参数后，可以在开放平台查看每日活跃会员统计图表。uuid需要和token一起传递。 |
| token | string | 可选 | 公共参数 当前登录会员的会话凭证，可通过会员登录接口获得。uuid需要和token一起传递。 |
| return_data | string | 可选 | 公共参数 数据返回结构，其中：         return_data=0，返回完整的接口结果，示例：{"ret":200,"data":{"err_code":0,"err_msg":"","title":"Hi YesApi，欢迎使用小白开放接口！"},"msg":"V3.1.0 YesApi App.Hello.World","_t": 1657513450, "_auth": "9bcd54ff53e71a1d80d37c52bdfabf76"}；         return_data=1，返回简洁的接口结果，只返回data字段，结构简化一级，更扁平，示例：{"err_code":0,"err_msg":"V3.1.0 YesApi App.Hello.World","title":"Hi YesApi，欢迎使用小白开放接口！"}。          |
| yesapi_allow_origin | int | 可选 | 公共参数 是否允许跨域请求，1表示允许，0表示不允许。 |


### 业务参数（使用POST或Query传递）
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| model_name | string | 必填 | 表单名称（对应在小白开放平台创建时的数据库表名称），查看我的全部表单 |
| model_uuid | string | 可选 | 表单UUID，即对应表单数据里的uuid字段。分为三种情况：                 model_uuid为@NULL或未提供时（默认值）：如model_uuid=@NULL，即不限制uuid，可匹配任意uuid，包括uuid为空和不为空的数据纪录；                 model_uuid为空字符串：为空字符串时，如model_uuid=，只匹配uuid为空字符串的数据纪录（即游客数据）；                 model_uuid为具体的值：如model_uuid=8AEA2AF1951C0376EC668A74B8CAA64A，则进行精确匹配，只匹配与表单uuid相等的数据纪录。                                   |
| check_code | string | 可选 | 待检测的口令，仅当在小白开放平台配置口令后才会对此参数进行检测，规则配置教程 |
| select | array | 可选 | SQL语句的SELECT部分，多个字段用英文逗号分割，如：select=id,uuid |
| logic | enum | 可选 | where条件的逻辑组合，logic=and表示逻辑且，logic=or表示逻辑或 |
| where | array | 可选 |              SQL语句的WHERE查询条件，JSON格式，格式为：[第一组条件, 第二组条件, ……]。（where和where_X二选一，不可混用，以where_X优先）                          写法1：每一组的条件格式为：["字段名", "比较符", "比较值"]，其中：                              字段名：表单结构中存在的字段，或表字段                 比较符：比较符号可以是&gt;、&gt;=、&lt;、&lt;=、&lt;&gt;、!=、EQ、GT、GE、LT、LE、NE、LIKE、NLIKE、IN、NIN、BETWEEN、NBETWEEN                 比较值：需要比较的值，不同比较符的比较值格式会有所不同。如果字段是数值类型，请传递数值类型，不要用字符串。                          示例：当logic=and, where=[["id","&gt;",9],["id","&lt;=",10]]，则表示：id &gt; 9 AND id &lt;= 10。                          写法2（Beta）：每一组的条件格式可以为：MySQL条件字符串，支持嵌套、组合、函数等，功能更强大，组合更灵活，但要求：                              必须符合MySQL语法                 一些疑似危险的操作已被禁止                 建议掌握MySQL语法的专业开发者使用，并且使用静态参数，开启接口签名，以防SQL注入攻击                          示例：当logic=and, where=["id &gt; 9", "id &lt;= 10"]，则表示：id &gt; 9 AND id &lt;= 10。                          以上两种写法可以混合使用。如果需要有效防止SQL注入，请用写法1；如果需要更强大的条件组合，并且是固定参数条件时，可用写法2。更多示例说明请参考WHERE参数介绍。 |
| where_X | string | 可选 | 动态条件，优先于where的JSON数据，简化的where条件，更易使用但只支持部分比较符。条件格式：where_ + X（X要换成你的字段名） = 比较符（见下方） + 中横线（-） + 比较值。支持的比较符和示例如下：                              EQ：等于（默认），如：where_year=EQ-2020，或：where_year=2020，表示年份year等于2020；                 GT：大于，如：where_year=GT-2020，表示年份year大于2020；                 GE：大于等于，如：where_year=GE-2020，表示年份year大于或等于2020；                 LT：小于，如：where_year=LT-2020，表示年份year小于2020；                 LE：大于等于，如：where_year=LE-2020，表示年份year小于或等于2020；                 NE：不等于，如：where_year=NE-2020，表示年份year不等于2020；                 LIKE：模糊匹配，如：where_name=LIKE-小白，表示名字name含有小白的；                 NLIKE：模糊匹配（排除），如：where_name=NLIKE-小白，表示名字name不包含小白的                 IN：枚举查询，如：where_year=IN-2020,2021,2022，表示年份year在这三个年份，多个值用英文逗号分割                 NIN：枚举查询（排除），如：where_year=NIN-2020,2021,2022，表示年份year不在这三个年份，多个值用英文逗号分割                          如果同一字段有多个条件，使用双竖线||分割，如：where_year=GT-2000||LT-2020，表示year年份大于2020（logic=and或logic=or）小于2020。（where和where_X二选一，不可混用，以where_X优先）                  |
| order | array | 可选 | SQL语句的ORDER部分，JSON格式。具体格式为：[第一组排序，第二组排序，……]，可以单个或组合排序。每一组排序格式为："字段名 + 空格 + ASC|DESC"，其中：ASC：为指定列按升序排列DESC：为指定列按降序排列。例1：单个排序，order=["id DESC"]，表示按ID降序，即最新的在最前面。例2：组合排序，order=["id DESC", "add_time ASC"]，表示id DESC, add_time ASC，即先按ID从大到小，再按创建时间倒序排序。特别地，RAND表示随机排序，请慎用。 |
| page | int | 可选 | 第几页 |
| perpage | int | 可选 | 分页数量 |
| is_real_total | boolean | 可选 | 是否需要真正的总数，1是0否，当表单数据过多时，如果不需要查询真正的总数，将能极大提升接口响应的速度。若为假总数，固定返回9999999。 |


## 返回字段

| 返回字段	| 类型	| 说明 |
|--------|------|------|
| ret	| int | 接口状态码，`200`表示成功，`4xx`表示客户端非法请求，`5xx`表示服务端异常 |
| data | object/array/混合 | 接口返回的业务数据，由不同的API接口决定不同的数据返回字段和结构。当`return_data=1`时，接口只会返回此`data`字段。|
| msg | 字符串 | 提示信息，面向技术人员的帮助或错误提示信息，成功返回时为空字符串 |
| data.err_code | int | 状态操作码，0成功；1开发类错误，查询失败(表单不存在或查询错误)；2应用层规则拦截，拦截后可以小白开放平台查看日记|
| data.err_msg | string | 错误提示信息，err_code非0时参考此提示信息|
| data.total | int | 数据的总条目数量|
| data.list | array | 查询的结果列表数据|
| data.page | int | 当前第几页|
| data.perpage | int | 当前分页数量|


## 请求示例

```bash
curl -X POST "http://api.yesapi.net/?s=App.Table.FreeQuery&app_key=YOUR_APP_KEY" \
  -H "Content-Type: application/json;charset=UTF-8" \
  -d "YOUR_POST_DATA_JSON"
```

成功返回示例（ret=200表示成功请求，data为成功后的业务数据）：
```json
{
    "ret": 200,
    "data": `成功返回的业务数据`,
    "msg": ""
}
```

失败返回示例：
```json
{
    "ret": 400,
    "data": [],
    "msg": "客户端非法请求：xxx参数错误"
}
```