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"

示例

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 中可用。

在本文档中