elsa HTTP 活动
这些活动属于 HTTP 类别:
显示名称 | .NET 类型 | 类型 | 描述 |
---|---|---|---|
HTTP 响应 | WriteHttpResponse |
动作 | 向 HTTP 响应写入响应信息。 |
HTTP 文件响应 | WriteFileHttpResponse |
动作 | 向 HTTP 响应写入一个或多个文件。 |
HTTP 请求 | SendHttpRequest |
动作 | 向给定的 URL 发送 HTTP 请求。 提供嵌入式端口的状态码。 |
HTTP 请求(流) | FlowSendHttpRequest |
动作 | 向给定的 URL 发送 HTTP 请求。 提供输出端口的状态码。 |
HTTP 终端点 | HttpEndpoint |
触发器 | 在给定路径和 HTTP 方法上等待传入的 HTTP 请求。 |
每个活动的详细信息请见下文。
HTTP 响应
此活动允许您向当前的 HTTP 响应对象写入响应。
属性 | 类型 | 描述 | 示例 |
---|---|---|---|
StatusCode |
HttpStatusCode |
要写入的状态码。 | HttpStatusCode.OK |
Content |
object? |
要回写的正文。字符串值会原样发送,而对象会被序列化为 JSON 字符串。 | "Hello World!" |
ContentType |
string? |
发送响应时要写入的内容类型。 | "text/plain" |
ResponseHeaders |
HttpResponseHeaders? |
随响应一起发送的头部。 | new { "x-generator" = "Elsa Workflows" } |
HTTP 文件响应
此活动允许您向当前的 HTTP 响应对象写入一个或多个文件。支持可恢复/部分下载。
属性 | 类型 | 描述 | 示例 |
---|---|---|---|
Content |
object? |
作为文件返回的内容。支持 URL(将会先下载)、字节数组、流、Downloadable 对象以及这些类型的任意组合的数组。 |
Hello World! |
ContentType |
string? |
发送响应时要写入的文件 MIME 类型。 | application/pdf |
Filename |
string? |
文件下载时使用的文件名。如果不设置,系统会自动生成文件名。 | invoice.pdf |
Entity Tag |
string? |
自定义的实体标签。如果不设置,系统会自动生成实体标签。 | "abcd1e3" |
Enable Resumeable Downloads |
bool |
是否启用可恢复下载。当启用时,客户端在连接丢失后可以继续下载。 | true |
Download Correlation ID |
string? |
支持可恢复下载时,系统需要能够将生成的缓存文件与请求相关联。如果留空,系统将使用 "x-elsa-download-id"。 | "my-download-id" |
HTTP 上下文限制
这些活动仅应在 HTTP 上下文中使用。例如,当工作流程由 HTTP 终端点启动,或通过 API 端点调用时。
示例
using System.Net;
using Elsa.Http;
using Elsa.Http.Models;
using Elsa.Workflows.Core.Abstractions;
using Elsa.Workflows.Core.Contracts;
namespace Samples;
public class SampleWorkflow : WorkflowBase
{
protected override void Build(IWorkflowBuilder builder)
{
builder.Root = new WriteHttpResponse
{
StatusCode = new(HttpStatusCode.OK),
Content = new("Hello World!"),
ContentType = new("text/plain"),
ResponseHeaders = new(new HttpResponseHeaders { ["x-generator"] = new[] { "Elsa Workflows" } })
};
}
}
HTTP 请求
此活动允许您调用 HTTP 端点。您可以指定预期返回的状态码、URL、方法、内容、内容类型、授权和头部。它返回解析后的内容和 HttpResponse
。
HTTP 请求(流)
与 HTTP 请求相同,但状态码作为输出端口返回,而不是嵌入式端口。
HTTP 终端点
此活动允许您创建可以通过 Web
调用的 HTTP
终端点。
要能够调用它,您需要在常规设置中检查 “可以启动工作流程” 的复选框。同时,在设置下,您需要添加一个路径和方法来调用此终端点。
路径中可以使用路由变量,例如:/orders/{number}
。调用的 URL 是您的 Elsa 实例的基础 URL 加上 /workflows
再加上路径。
如有需要,您可以为您的终端点添加授权,但这需要首先配置。
在输出选项卡中,您可以将传入的数据如内容、路由变量、查询字符串数据和头部连接到变量。
如果您将路由变量连接到名为 routes
的变量( 类型为对象或字典 string
, object
),您可以在 JavaScript
中这样使用:
getRoutes().number
或者这样 getRoutes()["number"]
整个 HTTP 请求在 result 中可用。