如何在 Open FaaS 中 return HTTP 状态码?
how to return HTTP status code in Open FaaS?
openfaas中部署的一个函数如何return给调用者不同的HTTP状态码?喜欢 4xx 代码。
根据文档,看门狗会处理 stdout
或 stderr
的 http 状态 200 或 5xx。
有没有办法改变 400、409 等状态?我正在使用 faas-cli
下载的 csharp 模板
你不能,正如此处所述https://github.com/openfaas/faas-netes/issues/147
建议的解决方案是return一个带状态码的payload,在接收端解析payload。
默认 python 模板显示为 return 200,即使您 system.exit(1) 或抛出异常。我假设其他旧模板的行为类似,这是经典看门狗的预期。
但是,如果您使用的语言模板 supports running the new of-watchdog, I think it can return non-200 codes, like 400, 404, etc. 您可以使用 faas-cli 下载这些模板,它们来自 openfaas-incubator 项目和社区。
我刚刚确认使用来自 openfaas-incubator 的 python3-http language/template,并且 csharp-httprequest from distantcam 非 200 代码可以像 400 一样 returned, 404 等
这将列出可用模板:
faas-cli template store list
要安装我测试过的 csharp 模板:
faas-cli template store pull distantcam/csharp-httprequest
csharp-httprequest 的 OOTB 处理程序可以像这样轻松修改为 return a 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 模板。它就像一个魅力。
openfaas中部署的一个函数如何return给调用者不同的HTTP状态码?喜欢 4xx 代码。
根据文档,看门狗会处理 stdout
或 stderr
的 http 状态 200 或 5xx。
有没有办法改变 400、409 等状态?我正在使用 faas-cli
你不能,正如此处所述https://github.com/openfaas/faas-netes/issues/147
建议的解决方案是return一个带状态码的payload,在接收端解析payload。
默认 python 模板显示为 return 200,即使您 system.exit(1) 或抛出异常。我假设其他旧模板的行为类似,这是经典看门狗的预期。
但是,如果您使用的语言模板 supports running the new of-watchdog, I think it can return non-200 codes, like 400, 404, etc. 您可以使用 faas-cli 下载这些模板,它们来自 openfaas-incubator 项目和社区。
我刚刚确认使用来自 openfaas-incubator 的 python3-http language/template,并且 csharp-httprequest from distantcam 非 200 代码可以像 400 一样 returned, 404 等
这将列出可用模板:
faas-cli template store list
要安装我测试过的 csharp 模板:
faas-cli template store pull distantcam/csharp-httprequest
csharp-httprequest 的 OOTB 处理程序可以像这样轻松修改为 return a 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 模板。它就像一个魅力。