如何在Open FaaS中返回HTTP状态代码



部署在openfaas中的函数如何向调用方返回不同的HTTP状态代码?就像4xx代码。

根据文档,看门狗将处理stdoutstderr的http状态200或5xx。

有没有办法改变状态,比如400409等?我正在使用faas-cli下载的csharp模板

如这里所述,您不能https://github.com/openfaas/faas-netes/issues/147

建议的解决方案是返回一个带有状态代码的有效载荷,并在接收端解析该有效载荷。

即使在system.exit(1(或抛出异常时,默认python模板也会返回200。我认为其他较旧的模板表现类似,这是对经典看门狗的期望。

但是,如果你使用的语言模板支持运行新的看门狗,我认为它可以返回非200代码,如400、404等。你可以使用faas cli下载这些模板,它们来自openfaas孵化器项目和社区。

我刚刚使用openfaas孵化器中的python3http语言/模板和distantcam中的csharp-httprequest确认,非200代码可以返回,如400、404等。

这将列出可用的模板:

faas-cli template store list

安装我测试过的csharp模板:

faas-cli template store pull distantcam/csharp-httprequest

csharp-httprequest的OOTB处理程序可以很容易地修改为返回400:

using Microsoft.AspNetCore.Http;
using System.IO;
using System.Threading.Tasks;
namespace Function
{
public class FunctionHandler
{
public async Task<(int, string)> Handle(HttpRequest request)
{
var reader = new StreamReader(request.Body);
var input = await reader.ReadToEndAsync();
return (400, $"Hello! Your input was {input}");
}
}
}

经过大量关于如何在python中实现这一点的研究,不要使用随意模板,应该使用python flask模板。它就像一个符咒。

相关内容

  • 没有找到相关文章

最新更新