UiPath Documentation
functions
latest
false
函数用户指南
  • 概述
    • 关于函数
  • JavaScript 函数
    • 入门指南
    • 构建 JavaScript 函数
    • HTTP 触发器和路由
    • 函数上下文
    • 访问平台服务
    • 测试和调试
  • Python 函数
  • 部署并运行
重要 :
请注意,此内容已使用机器翻译进行了本地化。 新发布内容的本地化可能需要 1-2 周的时间才能完成。

HTTP 触发器和路由

JavaScript 函数的 HTTP 触发器行为,涵盖输入源、路径参数、身份验证作用域、有效负载限制以及调用已部署的触发器。

声明 method 和 path 的 JavaScript 函数将公开为 HTTP 端点。正因如此,函数才可用作编码应用程序的后端:应用程序调用端点,而函数则保存永远不会到达浏览器的凭据和业务规则。

export default defineFunction({
  name: "get-order",
  method: "GET",
  path: "/orders/:id",
  input: defineSchema<{ id: string }>(),
  handler: async (input, ctx) => fetchOrder(input.id),
});
export default defineFunction({
  name: "get-order",
  method: "GET",
  path: "/orders/:id",
  input: defineSchema<{ id: string }>(),
  handler: async (input, ctx) => fetchOrder(input.id),
});

支持的方法包括:

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

输入的来源​

方法请求将数据读取为输入
GET查询字符串
POST、PUT、PATCH、DELETEJSON 请求正文

路径参数也会合并,因此 /orders/:id 提供 id 以及输入的其余部分。必须在输入类型中声明每个路径参数:派生架构是关闭的,因此未声明的架构会作为未知属性而拒绝。

路径参数会合并到正文下方,因此以相同名称的正文字段为准。不同名称可以避免静默覆盖。

路径参数​

模式匹配项
:param仅有一个段 — /users/:id 与 /users/42 匹配
:param{regex}一个段,受限 — /users/:id{[0-9]+}
:param?段,或不返回任何内容 — /list/:filter? 匹配 /list 和 /list/open
*结尾的全局包,包括裸前缀

ctx.params 上的值也以字符串形式提供,按名称键入。无论声明顺序如何,更具体的路由优先,因此文本 /users/me 优先于 /users/:id。本地 serve 中与部署后的路由行为相同。

调用已部署的触发器​

发布并部署该函数后,其 path 将成为 Orchestrator HTTP 触发器的缩略名,该触发器通过路由匹配解析传入请求。调用者发送持有者令牌;平台将调用者的身份作为ctx.user传递给函数。

已部署的触发器以包为前缀的名称注册:包orders-functions中名为get-order函数注册为orders-functions_get-order 。按名称解析函数需要使用带前缀的形式。

在编码应用程序中,使用UiPath TypeScript SDK中的Functions服务,而不要手动构建 URL。

备注:

通过 SDK 的 Functions.invoke() 调用函数时,路径参数不会替换到 URL 中 — 声明的缩略名按书面形式发送,值作为查询参数或在正文中传播。处理程序仍会收到正确的输入,但 ctx.params 包含文本模式,并且受正则表达式约束的参数将不匹配。解析路径需要在调用者中构建 URL。

身份验证​

使用来自外部应用程序的持有者令牌对调用者进行身份验证。令牌需要的作用域取决于调用者的运行位置。

已部署的编码 App会请求在其外部应用程序中注册的作用域,平台会在部署时将其注入到应用程序中。向函数调用者所需的 Orchestrator 作用域注册应用程序,例如:

uip admin external-apps create "My App" \
  --non-confidential \
  --redirect-uri "https://<org>.uipath.host/my-app" \
  --user-scope "OR.Execution,OR.Folders"
uip admin external-apps create "My App" \
  --non-confidential \
  --redirect-uri "https://<org>.uipath.host/my-app" \
  --user-scope "OR.Execution,OR.Folders"

如果应用程序启动作业或读取其结果,则也需要 OR.Jobs。

当您在本地运行同一个应用程序时,其作用域字符串来自uipath.json ,您也可以在其中请求OR.Default — 此作用域使 Orchestrator 应用调用者的文件夹和租户角色分配:

openid profile email offline_access OR.Default OR.Execution OR.Folders
openid profile email offline_access OR.Default OR.Execution OR.Folders
备注:

无法将 OR.Default 添加到外部应用程序注册中; API 将其作为未知作用域而拒绝。因此,通过 uipath.json 本地运行的应用程序可使用此功能,但已部署的编码应用程序则不可用。

有效负载限制​

HTTP 触发器将请求作为作业参数传递,因此请求和响应都受到限制。

方向上限已超出限制
请求10,000 个序列化输入字符500,包含 errorCode 4801 和消息 JobArguments length should be less than 10000 characters
响应大约 512 KB200 正文为空,并且没有错误

空响应是设计的依据:状态显示成功,但没有任何关于丢失的报告。当有效负载可能超过任一限制时,请改为将函数作为作业调用——作业将大型输入和输出作为附件包含在内。请参阅调用函数。

提示:

返回引用而非数据本身(存储桶路径或调用者单独获取的标识符),可防止设计受到限制。

后续步骤​

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新