我有一个 Azure Function 2.x,它驻留在一个静态类上,如下所示
[FunctionName("Register")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest req, ILogger log)
{
MyTypeClass defReturn = new MyTypeClass();
HttpStatusCode defCode = HttpStatusCode.BadRequest;
/*
* Logics that might or might not changes
* defReturn and defCode value
*/
return StatusCode((int) defCode, JsonConvert.SerializeObject(defReturn))
}
我如何实现return StatusCode((int) defCode, JsonConvert.SerializeObject(defReturn))
部分? Azure Functions 2.x 中是否有此类方法或等效方法?
在 Azure Functions 1.x 中,我可以使用 req.CreateResponse(defCode, defReturn)
执行等效操作,其中 req
是 HttpRequestMessage
,但我我试图坚持使用 2.x 模板/标准
附加说明:上述代码应返回 HTTP 400 Bad Request
,并使用 defReturn
作为对客户端的响应正文。但是,当我将 defCode 更改为 HttpStatusCode.Accepted 时,它应该返回具有相同响应正文的 HTTP 202 Accepted 。我怎样才能实现这个目标?
附加解释#2:(如果我没记错的话)在 ASP.NET Core 1.x 中我完全可以这样做,通过调用静态方法 StatusCode
返回 IActionResult
不是 StatusCodes
(这是一个包含 HTTP 代码常量的静态类
谢谢
最佳答案
回复很晚了,但我今天遇到了同样的问题,所以也许这对其他搜索者有帮助
选项 1:默认代码
这在博客Here中有详细说明。
一些代码(例如 200 和 400)是预定义的,可供使用
return new OkObjectResult("Your message"); // 200
return new BadRequestObjectResult("Your error message"); // 400
这些功能并不适用于所有已知的状态代码,但适用于一些最常见的状态代码。
选项2:手动设置代码
如果您需要默认情况下未提供的特定代码,您可以使用基类并自行创建它们。
例如,要实现茶壶响应,您可以使用
using Microsoft.AspNetCore.Http;
var result = new ObjectResult("Your message");
result.StatusCode = StatusCodes.Status418ImATeapot;
return result;
在此示例中,使用 StatusCodes 类中的 Statuscode,但您也可以输入其他代码(通常只需坚持这些代码)
此外,如果需要,ObjectResult 类还提供其他格式选项。
关于c# - Azure Function,返回状态码+JSON,无需在每个逻辑部分定义返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74198988/