部署在 openfaas 中的函数如何向调用者返回不同的 HTTP 状态码?像 4xx 代码一样。
根据文档,看门狗将处理http 状态 200stdout
或stderr
5xx 的 或 。
有没有办法改变400、409等状态?我正在使用由下载的 csharp 模板faas-cli
部署在 openfaas 中的函数如何向调用者返回不同的 HTTP 状态码?像 4xx 代码一样。
根据文档,看门狗将处理http 状态 200stdout
或stderr
5xx 的 或 。
有没有办法改变400、409等状态?我正在使用由下载的 csharp 模板faas-cli
你不能,如此处所述https://github.com/openfaas/faas-netes/issues/147
建议的解决方案是返回带有状态码的有效载荷,并在接收端解析有效载荷。
即使您 system.exit(1) 或抛出异常,默认的 python 模板似乎也会返回 200。我假设其他旧模板的行为类似,这是经典看门狗的预期。
但是,如果您使用的语言模板支持运行新的看门狗,我认为它可以返回非 200 代码,例如 400、404 等。您可以使用 faas-cli 下载这些模板,它们来自 openfaas -孵化器项目和社区。
我刚刚确认使用来自 openfaas-incubator 的 python3-http 语言/模板和来自远程摄像机的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}");
}
}
}