Azure Functions extension library.
- Model binding attribute lile [FromQuery], [FromBody]
- System.Text.Json serializer
- Add [BindQuery] attribute to parameters
- Built-in types and Nullable Built-in types and TypeDescriptor and Array supported
[FunctionName("Query")]
public IActionResult Query(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "query")] HttpRequest req,
[BindQuery] int a,
[BindQuery] int? b,
[BindQuery] int c = 3)
{
return Results.Of(new QueryResponse
{
Result = a + (b ?? 0) + c
});
}
[FunctionName("Array")]
public IActionResult Array(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "array")] HttpRequest req,
[BindQuery] int[] a,
[BindQuery] int?[] b)
{
return Results.Of(new QueryResponse
{
Result = a.Sum() + b.Sum(x => x ?? 0)
});
}
- Add [BindBody] attribute to parameters
- Serialize Body using System.Text.Json
[FunctionName("Body")]
public IActionResult Body(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "body")] HttpRequest req,
[BindBody] BodyRequest request)
{
return Results.Of(new BodyResponse
{
Id = request.Id,
Name = request.Name
});
}
public class BodyRequest
{
public int Id { get; set; }
public string Name { get; set; }
}
- SystemTextJsonResult action result
- Results helper class
return new SystemTextJsonResult(response);
// if response is null return NotFoundResult, response is not null return SystemTextJsonResult
return Results.Of(response);
- Use AddAzureFunctionExtension() method to configure
public sealed class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddAzureFunctionExtension(c =>
{
c.Options.Converters.Add(new DateTimeConverter());
});
}
}