
# 【 1831 “阅后即焚”接口(专取非重复数据)】接口文档
**所属平台**: YesApi果创云
**接口地址**: `http://api.yesapi.net/?s=App.Table.FreePopOne`
**请求方式**: POST/GET

## 接口基本信息
- **功能描述**:  查改非重复 可以根据自定义的多个条件（AND或者OR），查找获取一条数据，并且在获取数据后更改字段，从而实现非重复数据的获取
- **返回格式**: JSON

## 请求参数说明

### 系统参数（使用Query传递）
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|--------|
| s | string | 必填 | 接口服务名，固定为`App.Table.FreePopOne` |
| 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 | 可选 | 待检测的口令，仅当在小白开放平台配置口令后才会对此参数进行检测，规则配置教程 |
| 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优先）                  |
| fields | array | 可选 | 需要返回的字段名，多个字段用英文逗号分割，示例：fields=id,uuid,add_time |
| data | array | 可选 | 待更新的数据（注意！获取到数据后将会进行此更新），需要JSON编码后传递。格式：data={"字段名1":"字段值1","字段名2":"字段值2"...}。JSON在线解析及格式化验证（data和data_X二选一） |
| data_X | string | 可选 | 动态参数，优先于data的JSON数据。可自由传入动态参数，字段名组合格式：data_ + X（X要换成你的字段名），例如数据表单标题title字段，组合后为：&data_title=YesApi，等效于：&data={"title":"YesApi"}。可以同时传入多个动态参数，例如：&data_title=YesApi&data_year=2020，比JSON格式更方便（data和data_X二选一） |
| order_type | int | 可选 | 排序类型，默认order_type=1，表示按默认的顺序，即ID升序；order_type=2时表示ID降序；order_type=3表示随机排序，将能更好地实现高并发下的非重复获取（为保证接口质量，随机排序取的数据量超过10W，请联系小白客服进行定制化！）；order_type=4表示更新时间update_time升序；order_type=5表示更新时间update_time降序； |


## 返回字段

| 返回字段	| 类型	| 说明 |
|--------|------|------|
| ret	| int | 接口状态码，`200`表示成功，`4xx`表示客户端非法请求，`5xx`表示服务端异常 |
| data | object/array/混合 | 接口返回的业务数据，由不同的API接口决定不同的数据返回字段和结构。当`return_data=1`时，接口只会返回此`data`字段。|
| msg | 字符串 | 提示信息，面向技术人员的帮助或错误提示信息，成功返回时为空字符串 |
| data.err_code | int | 状态操作码，0成功；1开发类错误，获取失败(表单不存在)；2应用层规则拦截，拦截后可以小白开放平台查看日记；3查无数据；4当前取随机数据已超过10万条，为保证接口服务质量，请联系小白客服进行定制化。|
| data.err_msg | string | 错误提示信息，err_code非0时参考此提示信息|
| data.data | object | 获取的数据，可以指定返回字段|


## 请求示例

```bash
curl -X POST "http://api.yesapi.net/?s=App.Table.FreePopOne&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参数错误"
}
```