Functions.Templates/Templates/HttpTriggerWithOpenAPI-CSharp/HttpTriggerWithOpenAPICSharp.cs (45 lines of code) (raw):

using System.IO; using System.Net; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Attributes; #if (AuthEnabled) using Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Enums; #endif using Microsoft.Extensions.Logging; using Microsoft.OpenApi.Models; using Newtonsoft.Json; namespace Company.Function { public class HttpTriggerWithOpenAPICSharp { private readonly ILogger<HttpTriggerWithOpenAPICSharp> _logger; public HttpTriggerWithOpenAPICSharp(ILogger<HttpTriggerWithOpenAPICSharp> log) { _logger = log; } [FunctionName("HttpTriggerWithOpenAPICSharp")] [OpenApiOperation(operationId: "Run", tags: new[] { "name" })] #if (AuthEnabled) [OpenApiSecurity("function_key", SecuritySchemeType.ApiKey, Name = "code", In = OpenApiSecurityLocationType.Query)] #endif [OpenApiParameter(name: "name", In = ParameterLocation.Query, Required = true, Type = typeof(string), Description = "The **Name** parameter")] [OpenApiResponseWithBody(statusCode: HttpStatusCode.OK, contentType: "text/plain", bodyType: typeof(string), Description = "The OK response")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post", Route = null)] HttpRequest req) { _logger.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name; string responseMessage = string.IsNullOrEmpty(name) ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." : $"Hello, {name}. This HTTP triggered function executed successfully."; return new OkObjectResult(responseMessage); } } }