我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?

如上图,在表格中,我们常用的就是需要添加搜索项,也就是检索项
比如我要加一个时间区间检索项,检索注册的时间区间
那使用PasteForm框架需要几个步骤呢?
首先得确定这个UserInfo的检索Model,也就是从这里查看
使用PasteBuilder模式生成规则是InputQueryXXXX
如上图所示,也就是InputQueryUserInfo
我们转到这个Model添加时间字段
///<summary>
/// 查询
///</summary>
public class InputQueryUserInfo : InputSearchBase
{
/// <summary>
/// 注册区间
/// </summary>
[ColumnDataType("daterange", "sdate", "edate")]
public DateTime? sdate { get; set; }
/// <summary>
/// 日期区间
/// </summary>
public DateTime? edate { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string email { get; set; }
}
如上所示,我添加了2个字段sdate和edate,为啥要设置为nullable格式呢?因为可以不输入时间,也就是忽略时间检索
我给他加了一个特性daterange,也就是使用时间区间,js会自动把尾巴时间隐藏,如上图,时间对是sdate edate
注意这里的信息涉及了是否可以为null,也就是是否可不填,然后是格式等 其实还包括了比如上面的注册区间
上面添加好了后,我们需要把他和查询关联起来,回到刚刚的代码,添加如下
/// <summary>
/// 获取
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet]
public async Task<PagedResultDto<UserInfoListDto>> Page([FromQuery] InputQueryUserInfo input)
{
var _query = _dbContext.UserInfo.Where(t => 1 == 1);
var _pagedto = new PagedResultDto<UserInfoListDto>();
if (input.page == 1)
{
_pagedto.TotalCount = await _query.CountAsync();
}
var dataList = await _query
.WhereIf(!String.IsNullOrEmpty(input.word), x => x.UserName.Contains(input.word) || x.Desc.Contains(input.word))
.WhereIf(input.sdate != null, x => input.sdate <= x.CreateDate && x.CreateDate < input.edate)
.WhereIf(!string.IsNullOrEmpty(input.email),x=>x.Email == input.email)
.OrderByDescending(x => x.Id)
.Page(input.page, input.size)
.AsNoTracking()
.ToListAsync();
if (dataList == null || dataList.Count == 0)
{
throw new PasteCodeException("没有查询到数据", 204);
}
var temList = ObjectMapper.Map<List<UserInfo>, List<UserInfoListDto>>(dataList);
_pagedto.Items = temList;
return _pagedto;
}
注意看这一行
.WhereIf(input.sdate != null, x => input.sdate <= x.CreateDate && x.CreateDate < input.edate)
其实上面还是有优化空间的哈,理论上时间应该写第一行,然后是没有对sdate和edate做严格校验!
上面修改完成后,应该是没有问题的,这么简单的功能,那么就是发布了,右键发布
等待发布完成后,打开PasteSpiderFile
然后选择项目,点击一键发布
主要看选择的项目是否正确,然后就是等待webhook通知了!
等到接收到发布成功的通知后(我是配置到钉钉通知,比如)
我们直接在刚刚的页面刷新下,就可以看到如下
是不是很神奇,只是刷新下就可以看到新添加的了,而且你发现没有,只有一个输入框!!!
点击看看
直接就是一个时间区间选择器!
查询后直接提示没有数据,因为我这个区间确实没有注册账号,忽略表格的历史数据哈,这个我没做204清空处理
添加一个日期区间查询就这么完成了!!!
回顾下整个过程,也就是在
是不是少了前端这一大块
!!!事实上不止!!!
尘埃
已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!