您可以使用HTTP Handler更方便地處理HTTP請求。調用函數時,函數計算通過運行您提供的Handler來處理HTTP請求。本文介紹C# HTTP Handler的結構和特點。
HTTP Handler簽名
public virtual async Task<HttpResponse> HandleRequest(HttpRequest request, HttpResponse response, IFcContext fcContext)
{
}
函數計算使用C#編寫HTTP函數,需要使用Nuget引入Aliyun.Serverless.Core
和Aliyun.Serverless.Core.Http
包。示例如下。
<ItemGroup>
<PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
<PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
</ItemGroup>
HTTP Handler示例
一個簡單的C# HTTP Handler示例如下所示。
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Aliyun.Serverless.Core;
using Aliyun.Serverless.Core.Http;
namespace Example
{
public class HttpHandler : FcHttpEntrypoint
{
public override async Task<HttpResponse> HandleRequest(HttpRequest request, HttpResponse response,
IFcContext fcContext)
{
response.StatusCode = 200;
response.ContentType = "text/plain";
await response.WriteAsync("hello world\n");
return response;
}
protected override void Init(IWebHostBuilder builder) { }
static void Main(string[] args) { }
}
}
函數入參解析如下。
- HttpRequest request:HttpRequest類。
- HttpResponse response:HttpResponse類。
- IFcContext fcContext:上下文對象,包含函數和請求的信息。
說明 C# HTTP Handler必須繼承Aliyun.Serverless.Core.Http中的FcHttpEntrypoint,其中Init函數和HandleRequest必須重寫。
示例程序
函數計算官方庫包含使用各種處理程序類型和接口的示例應用程序。每個示例應用程序都包含可用于輕松編譯部署的方法,示例如下。
dotnet3-blank-http:HTTP回調處理程序。