Qmy Api Prms Parse for Visual Studio Code
1、权限配置方式
在所在需要添加权限的api.js中添加权限信息注释:
/**
* @api
* @desc 设置项目星标
* @url /education-management-service/project/setStarMark
* @method POST
* @prms w:prms:prms
* @topLevel true
* @parentPrms w:prms:parent
*/
export function api(){
// 请求逻辑
}
属性描述
属性名 |
属性描述 |
权限解析对应属性 |
必填 |
@desc |
接口跟描述 |
title |
True |
@url |
接口地址 |
url |
True |
@method |
接口请求方法(GET、POST、PUT、DELETE) |
Method |
True |
@prms |
权限标识 |
id |
True |
@topLevel |
是否是顶级权限,在引用权限中可表示权限是否直接添加至顶级权限 |
-- |
False |
@parentPrms |
父级权限id,多个父级时逗号相连接,例:w:prms:prms1,w:prms:prms2 |
-- |
False |
@children |
但存在引用权限时该值有效,例如@children projectInfo,gantt,dataReport,files,overview,target,task,这里projectInfo、task为应用权限中的命名名称(在<@importPrms>中注释块声明),如果值使用某个api.js文件中的单个权限以. 相连接dataReport.prmsKey ,如果是这个文件中的一些权限则使用prmsModuleName.<prms1|prms2|...>,则表示只使用该权限中与此对应的这个权限。 |
|
|
2、引用权限
/**
* <@importPrms>
* @mergePrms @/views/projectManage/settings/roles/api.js
* @gantt @/views/projectManage/projectInfo/gant/api.js
* @projectInfo @/views/projectManage/projectInfo/api.js
* @files @/views/projectManage/projectInfo/files/api.js
* @target @/views/projectManage/projectInfo/target/api.js
* @task @/views/projectManage/projectInfo/task/api.js
*/
import http from "@/utils/http"
import xxxx from "xxxxx"
.....
属性说明
属性名 |
属性描述 |
属性值 |
必填 |
别名 |
<@importPrms> |
必要标识、如果要读取其他权限、必须设置此项 |
无 |
True |
<@imp>、<@import> |
@mergePrms |
此为固定属性、该属性表示将引入的权限直接合并至当前权限 |
String |
False |
@merge |
@其他 |
除以上固定属性外,其他属性直接用于引用权限命名 |
String |
False |
|
引入权限可以通过权限id配置限制引入哪些权限,不会全部解析
例:
/**
* <@importPrms>
* @mergePrms @/mergePrms.js
* @mergePrms @/module2.js w:module2:2,w:module2:3 // 这里只会取出id为w:module2:2,w:module2:3的权限
* @module @/modulePrms.js
* @module3 @/module3.js
*/
3、循环引入
子级中去引入父级权限,在解析时只会解析在当前文件中的权限注释描述,不会解析<@importPrms>注释块中的权限,这样是防止解析过程陷入死循环导致堆栈溢出。
例:
a.js
/**
* <@import>
* @merge ./b.js
*/
/**
* @desc a
* @url /xx/xx
* @method POST
* @prms z:a:open
*/
b.js
/**
* <@import>
* @merge ./c.js
*/
/**
* @desc m1
* @url /xx/xx
* @method POST
* @prms z:m1:open
*/
c.js
/**
* <@import>
* @a ./a.js
*/
/**
* @desc c
* @url /training-service/caseCategory/
* @method POST
* @prms z:c:open
* @children a.<z:main3:open>
*/
这样就形成了循环引入,c.js就不会去解析a.js中导入的b.js
4、配置
可在插件配置中配置解析的路径别名aliasPath
,导入时会替换路径别名站位符为当前工作区路径。