部署在openfaas中的函数如何将不同的HTTP状态代码返回给调用者?就像4xx码一样。
根据文档,看门狗将针对HTTP状态200或5xx处理stdout
或stderr
。
是否可以更改状态,例如400、409等?我正在使用faas-cli
答案 0 :(得分:3)
您不能这样做,https://github.com/openfaas/faas-netes/issues/147
建议的解决方案是返回带有状态码的有效负载,并在接收端解析该有效负载。
答案 1 :(得分:0)
即使在system.exit(1)或引发异常时,默认的python模板似乎也会返回200。我认为其他较旧的模板的行为也类似,这是经典看门狗所期望的。
但是,如果您使用supports running the new of-watchdog, I think it can return non-200 codes, like 400, 404, etc.的语言模板,则可以使用faas-cli下载这些模板,它们来自openfaas-incubator项目和社区。 p>
我刚刚使用来自openfaas-incubator的python3-http语言/模板进行了确认,并且csharp-httprequest from distantcam确认可以返回非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}");
}
}
}