WebJobs.Extensions.HttpApi
2.0.3
.NET 6.0
.NET Core 3.1
Install-Package WebJobs.Extensions.HttpApi -Version 2.0.3
dotnet add package WebJobs.Extensions.HttpApi --version 2.0.3
<PackageReference Include="WebJobs.Extensions.HttpApi" Version="2.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add WebJobs.Extensions.HttpApi --version 2.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: WebJobs.Extensions.HttpApi, 2.0.3"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install WebJobs.Extensions.HttpApi as a Cake Addin
#addin nuget:?package=WebJobs.Extensions.HttpApi&version=2.0.3
// Install WebJobs.Extensions.HttpApi as a Cake Tool
#tool nuget:?package=WebJobs.Extensions.HttpApi&version=2.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
HTTP API Extensions for Azure Functions
Features
- Better route precedence
- Model validation
- ASP.NET Core like helpers
- Support URL generation
- Handle static files
- Simple reverse proxy
- Streamlined SPA / SSG hosting
Installation
Install-Package WebJobs.Extensions.HttpApi
dotnet add package WebJobs.Extensions.HttpApi
// Inherits from `HttpFunctionBase` class
public class Function1 : HttpFunctionBase
{
public Function1(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
[FunctionName("Function1")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req,
ILogger log)
{
return Ok($"Hello, {req.Query["name"]}");
}
}
Examples
Model validation
public class Function1 : HttpFunctionBase
{
public Function1(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
[FunctionName("Function1")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "post")]
SampleModel model,
ILogger log)
{
if (!TryValidateModel(model))
{
return BadRequest(ModelState);
}
return Ok(model);
}
}
public class SampleModel
{
[Required]
public string Name { get; set; }
public string[] Array { get; set; }
[Range(100, 10000)]
public int Price { get; set; }
}
ASP.NET Core like helpers
public class Function2 : HttpFunctionBase
{
public Function2(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
[FunctionName("Function2")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get")]
HttpRequest req,
ILogger log)
{
Response.Headers.Add("Cache-Control", "no-cache");
return Ok($"Now: {DateTime.Now}");
}
}
Support URL generation
public class Function3 : HttpFunctionBase
{
public Function3(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
[FunctionName("Function3")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "route/{id}")]
HttpRequest req,
string id,
ILogger log)
{
return CreatedAtFunction("Function3", new { id = "kazuakix" }, null);
}
}
Handle static files
public class Function1 : HttpFunctionBase
{
public Function1(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
[FunctionName("Function1")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequest req,
ILogger log)
{
return File("sample.html");
}
}
Simple reverse proxy
public class Function1 : HttpFunctionBase
{
public Function1(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
[FunctionName("Function1")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "{*path}"})] HttpRequest req,
ILogger log)
{
return Proxy("https://example.com/{path}");
}
}
Streamlined SPA / SSG hosting
public class Function1 : HttpFunctionBase
{
public Function1(IHttpContextAccessor httpContextAccessor)
: base(httpContextAccessor)
{
}
[FunctionName("Function1")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "{*path}"})] HttpRequest req,
ILogger log)
{
#if USE_REMOTE
return RemoteStaticApp("https://example.com", fallbackExclude: $"^/_nuxt/.*");
#else
return LocalStaticApp(fallbackPath: "404.html", fallbackExclude: $"^/_nuxt/.*");
#endif
}
}
License
This project is licensed under the MIT License
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows |
.NET Core | netcoreapp3.1 |
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
-
.NETCoreApp 3.1
- Microsoft.Azure.WebJobs.Extensions.Http (>= 3.0.12)
-
net6.0
- Microsoft.Azure.WebJobs.Extensions.Http (>= 3.0.12)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on WebJobs.Extensions.HttpApi:
Repository | Stars |
---|---|
shibayan/keyvault-acmebot
Automated ACME SSL/TLS certificates issuer for Azure Key Vault (App Gateway / Front Door / CDN / others)
|
|
shibayan/appservice-acmebot
Automated ACME SSL/TLS certificates issuer for Azure App Service (Web Apps / Functions / Containers)
|
Version | Downloads | Last updated |
---|---|---|
2.0.3 | 936 | 12/9/2021 |
2.0.2 | 152 | 12/8/2021 |
2.0.1 | 344 | 12/8/2021 |
2.0.0 | 699 | 11/13/2021 |
2.0.0-preview5 | 126 | 11/11/2021 |
2.0.0-preview4 | 130 | 11/10/2021 |
2.0.0-preview3 | 184 | 10/27/2021 |
2.0.0-preview2 | 111 | 10/20/2021 |
2.0.0-preview1 | 126 | 9/14/2021 |
1.1.2 | 991 | 10/20/2021 |
1.1.1 | 1,078 | 7/12/2021 |
1.1.0 | 6,867 | 5/24/2020 |
1.0.2 | 700 | 4/4/2020 |
1.0.1 | 401 | 3/31/2020 |
1.0.0 | 307 | 3/16/2020 |