Я включил эти пакеты Nuget в свой проект:
Код: Выделить всё
Код: Выделить всё
using Microsoft.Azure.Functions.Worker.Extensions.OpenApi.Extensions;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureAppConfiguration(builder =>
{
builder.AddJsonFile("appsettings.json", true, true);
})
.ConfigureServices(s =>
{
s.AddHttpClient();
// adding some services for my function
s.AddScoped();
// ...
})
// set up OpenAPI
.ConfigureOpenApi()
.Build();
host.Run();
Код: Выделить всё
[Function("ApiDocs")]
public async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "docs")] HttpRequestData req)
{
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/html; charset=utf-8");
var html = """
BFH RIS Service API reference
Scalar.createApiReference('#app', { url: '/api/openapi/v1.json?format=json' })
""";
await response.WriteStringAsync(html);
return response;
}
В «обычном» веб-API ASP.NET Core 10.0 я мог бы использовать интеграцию .NET для OpenAPI, чтобы сделать что-то вроде этого:
Код: Выделить всё
builder.Services.AddOpenApi(options =>
{
options.AddDocumentTransformer((document, context, cancellationToken) =>
{
document.Info = new()
{
Title = "Checkout API",
Version = "v1",
Description = "API for processing checkouts from cart."
};
return Task.CompletedTask;
});
});
Подробнее здесь: https://stackoverflow.com/questions/798 ... e-function
Мобильная версия