我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
--------------------------------------------------------------------------------------------------------------
PasteForm的升级版PasteApeart,享受极致简洁的框架的魅力,点击查看文档
--------------------------------------------------------------------------------------------------------------
先来看一下效果
可以看到上方的菜单中,中间这一行只有2个菜单,在实际开发中,我们主要遇到这样的几种情况
/// <summary>
///
/// </summary>
[PasteMenu("绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')")]
public int Menu1 { get; }
普通菜单很简单,直接这样写就可以了,这个的写法和前端有关,注意数据字段到前端的时候,默认首单词小写,你也可以用另外一种写法
/// <summary>
///
/// </summary>
[PasteMenuhtml]
public string Menu11 => $"<a href=\"javascript:;\" onclick=\"open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={Id}','80%','80%')\">绑定权限</a>";
上面这两种写法是等效的,不过要注意内容不一样,你要是注意看的话会发现,比如他们的特性不一样,一个是[PasteMenu]一个是[PasteMenuhtml]
有时候,我们要基于权限来显示,也就是不同人登录,看到不一样的数据
/// <summary>
/// 权限模式
/// </summary>
[PasteHidden]
[PasteMenu("绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
public int Menu3 { get; }
/// <summary>
/// 条件权限模式
/// </summary>
[PasteHidden]
[PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
public int Menu32 { get; }
自信观察,会发觉就是加了一个参数btnCode,这个字段要启用,在读取模板的时候,需要读取当前用户的按钮权限列表!
千呼万唤始出来,按钮控制终于来了!!!PasteApeart实现权限按钮就是这么简单
注意,使用了btnCode一定要配置特性[PasteHidden]
基于数据,就是和数据有关,啥时候显示,啥时候不显示
/// <summary>
/// 条件模式
/// </summary>
[PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')")]
public int Menu31 { get; }
/// <summary>
/// 条件权限模式
/// </summary>
[PasteHidden]
[PasteIfMenu("item.id == 2", "绑定权限", "open_window('绑定权限','pasteform/index.html?path=roleInfo&model=bind&grade_id={{:=item.id}}','80%','80%')", btnCode: "bind")]
public int Menu32 { get; }
/// <summary>
/// 直接渲染UI
/// </summary>
[PasteMenuhtml]
public string Menu2 => IsEnable ? $"<a href=\"javascript:;\" onclick=\"open_window('{Name}的详细','./pasteform/detail.html?path=gradeInfo&id={Id}','','90%')\">{IsEnable}</a>" : $"";
可以看到上面的,一个是基于id是否=2来判断,你也可以基于其他字段判断,不过有一点要注意!
当字段的类型是枚举类型的时候,不能直接这样判断,你要get一个int值得字段出来

上面说的是后端得代码
前端部分,还有一个关键点,就是菜单区域得宽度,这个有一个默认值,你也可以配置
_config.menu_max_width
这个默认值是500宽度,也就是最大菜单宽度多少,超过就换行了!
你也可以通过query来配置
比如
./pasteform/index.html?path=userInfo&menu_max_width=600
熟记这几个,那么菜单问题你就能搞定了!!
世事无常本无罪
应该和之前的PasteForm引入有关,之前的版本引入了大量的API,看看10月份或者11月份的版本,新版本的PasteForm极大的优化了API接口量,可以说直接从4N优化到了N个(N代表数据表数量)
已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!