设计统一的参数格式,
type queryParmas {
int start
int size
string filter
string sort
}
我们希望接口参数能够保持一致,并且不随着接口查询字段的变更而增加或改编,因此我们需要友好且灵活的语法作为一个表达式,并且通过规范性的语法生成限制条件。
为此,我们将前端查询的的数据规范为四个参数start(起始页)、size(分页大小)、filter(查询条件)、sort(排序条件)并规定了格式,其中:
filter 用于过滤筛选返回参数内容,基本语法由字段<筛选关系>条件组成:
•查询状态1和3 state(1@3)
•模糊查询字段nickname#hyperchain#
•等于字段attributeordinary
sort用于对查询结果排序,由字段 顺序组成:
•时间顺序, create_time desc, id asc
■解析参数
当接收到前端请求后,我们通过统一的语法解析器工具,对所有的请求我们会将它处理成一个统一的预定义模型,它将解析所有查询的参数,构建成一个统一的中间查询模型,后端会对请求参数校验解析并过滤完成分页,过滤排序条件的提取如下:
假设一次http请求携带的参数如下
start=1&size=10&filter=namehyperchain,type(1@2)&sort=createTime desc
1)解析器先对 start 和 size 校验 ,若为空则设定为默认值;
2)将 sort=createTime desc 解析为排序列和排序关系;
3)对 filter 语法进行解析,对字符串分隔成 namehyperchain 和 type(1@2),再进行正则匹配是否符合格式,符合后通过正则捕获组提取字段、筛选关系和条件