# WEB API脚本

任意的后台脚本(.action.ts)中被标识为export并且以request_作为函数名前缀的函数都被视为WEB API脚本函数, 这个WEB API脚本函数对应的请求url结构为:

${scriptPath}?[method=${methodName}][params=otherParams]
  1. scriptPath:后台脚本的在元数据中的全路径,比如/sysdata/public/request.action
  2. methodName: 指定执行脚本中的哪个函数,格式为函数名去除前缀request_后的字符,比如函数名为request_task,参数传递task; 这个参数是可选的,不传递,默认会执行名为request_default的函数。

注意

所有WEB API开发都需要有考虑权限。

为了避免开发者忽略权限考虑导致数据泄露问题,默认情况下,如果后台脚本WEB APIpublic目录中, 系统不做权限限制,其他位置的后台脚本WEB API,系统要求只有登录了才可以访问。

# WEB API脚本模板

/**
 * @see https://docs.succbi.com/v5/dev/script/custom-action
 */

//import db from "svr-api/db"; //数据库相关API
//import utils from "svr-api/utils"; //通用工具函数

/**
 * main方法主要用于:
 * 
 * 1. 定时调度脚本执行入口
 * 2. 脚本开发界面的执行入口,用于调试,或执行其他批处理业务
 */
export function main(args: string[]) {

}

/**
 * HTTP请求访问,默认执行此函数。
 * 
 * 规范:
 *
 * 1. 所有能访问到的函数都必须导出(export)
 * 2. 可以通过url、ajax请求或第三方开发者通过HTTPClient工具访问到此脚本内部`request_`开头的函数
 * 3. 默认将执行`request_main`函数,也可以通过指定url参数`method`,指定执行的函数`request_{method}`
 * 4. 函数可以执行重定向、forward、返回json、返回文本、下载文件、上传文件……
 *
 * @param request `HttpServletRequest`
 * @param response `HttpServletResponse`
 * @param params 请求参数,通常是一个json对象:
 *        1. params.param1 等价于 `request.getParameter('param1')`
 *        2. 当请求的`Contect-Type`==`application/json`(前端通过`rc`函数进行的调用)时,那么返回请求体的
 *           json对象, 等价于`request.getRequestBody()`
 */
export function request_main(request: HttpServletRequest, response: HttpServletResponse, params: any): any | void {
	return "hello world!";
}

/**
 * 通过浏览器访问,url中传递参数`method=method1`执行此函数。
 */
export function request_method1(request: HttpServletRequest, response: HttpServletResponse, params: any): any | void {

}

/**
 * `action_`开头的函数是用于程序流中给“执行后端脚本”调用的函数。
 * 
 * @param params 程序流传入的参数
 * @param nodeRunner 保留备用
 * @return 函数的返回值将反馈给程序流执行器,通过节点的`$resultData `属性可以访问到
 */
export function action_method1(params: JSONObject, nodeRunner: any): any | void {

}
是否有帮助?
0条评论
评论