部署在openfaas中的函数如何向调用方返回不同的HTTP状态代码?就像4xx代码。
根据文档,看门狗将处理stdout
或stderr
的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模板。它就像一个符咒。