Azure Function, returning status code + JSON, without defining return in every part of logic

asked7 years ago
last updated7 years ago
viewed22.8k times
Up Vote23Down Vote

I have an Azure Function 2.x that reside on a static class that looks like this

[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))
}

How can i achieve the return StatusCode((int) defCode, JsonConvert.SerializeObject(defReturn)) part ? is there any such method or equivalent in Azure Functions 2.x ?

in Azure Functions 1.x i can do the equivalent with req.CreateResponse(defCode, defReturn) where req is HttpRequestMessage , but i'm trying to stick with 2.x template/standard

Additional explanation : The said Code should return HTTP 400 Bad Request with the defReturn as it's response body to the client. But when i change the defCode to HttpStatusCode.Accepted, it should return HTTP 202 Accepted with the same response body. How can i achieve this ?

Additional explanation#2 : (If i remember correctly) in ASP.NET Core 1.x i can exactly do like that, returning IActionResult by calling a static method StatusCode not StatusCodes (which is a static class that contains HTTP codes constants

Thank you