این مقاله نشان میدهد که چگونه میتوانیم Swagger را برای اسناد API برای Azure Function APIها یکپارچه کنیم. همانطور که می دانیم، Swagger UI یک UI مبتنی بر وب را ارائه می دهد که اطلاعاتی در مورد سرویس REST APIs ارائه می دهد (در مورد ما، عملکردهای Azure ماشه HTTP).
بیایید گام به گام برای درک ادغام Swagger UI ببینیم.
مرحله 1 - پروژه Azure Functions را ایجاد کنید و Nuget مورد نیاز را نصب کنید
Visual Studio 2019 را باز کنید و پروژه عملکرد Azure جدید را با قالب خالی ایجاد کنید. بیایید بسته های زیر را نصب کنیم -
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
لطفاً توجه داشته باشید که این بسته ها ممکن است بر اساس نسخه دات نت و نسخه عملکرد Azure شما متفاوت باشد.
مرحله 2 - توابع Swagger و Swagger UI را اضافه کنید
بیایید تابع تریگر HTTP را برای رابط کاربری swagger و swagger اضافه کنیم.
[SwaggerIgnore]
[FunctionName("Swagger")]
public static Task < HttpResponseMessage > Swagger(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "swagger/json")] HttpRequestMessage req,
[SwashBuckleClient] ISwashBuckleClient swasBuckleClient) {
return Task.FromResult(swasBuckleClient.CreateSwaggerJsonDocumentResponse(req));
}
[SwaggerIgnore]
[FunctionName("SwaggerUI")]
public static Task < HttpResponseMessage > SwaggerUI(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "swagger/ui")] HttpRequestMessage req,
[SwashBuckleClient] ISwashBuckleClient swasBuckleClient) {
return Task.FromResult(swasBuckleClient.CreateSwaggerUIResponse(req, "swagger/json"));
}
}
مرحله 3 – کد راه اندازی را برای Swashbuckle اضافه کنید
کد راهاندازی را اضافه یا تغییر دهید و پیکربندی swagger مورد نیاز را مطابق زیر اضافه کنید.
namespace AzFuncWithSwagger {
public class SwashbuckleStartup: FunctionsStartup {
public override void Configure(IFunctionsHostBuilder builder) {
builder.AddSwashBuckle(Assembly.GetExecutingAssembly(), opts => {
opts.AddCodeParameter = true;
opts.Documents = new [] {
new SwaggerDocument {
Name = "v1",
Title = "Swagger document",
Description = "Integrate Swagger UI With Azure Functions",
Version = "v2"
}
};
opts.ConfigureSwaggerGen = x => {
x.CustomOperationIds(apiDesc => {
return apiDesc.TryGetMethodInfo(out MethodInfo mInfo) ? mInfo.Name : default (Guid).ToString();
});
};
});
}
}
}
مرحله 4 - یک تابع تریگر HTTP را به تست اضافه کنید
بیایید نمونه تابع ماشه HTTP را اضافه کنیم تا تعریف API را از swagger ببینیم و عملکرد را آزمایش کنیم. اگر توابع Http Trigger را دارید که نمیخواهید به Swagger اضافه کنید، میتوانیم از SwaggerIgnoreAttribute استفاده کنیم.
[FunctionName("training-save")]
[ProducesResponseType(typeof(TrainingResponse), (int) HttpStatusCode.OK)]
public static async Task < IActionResult > Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)]
[RequestBodyType(typeof(TrainingRequest), "request")] HttpRequest req, ILogger log) {
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
TrainingRequest data = JsonConvert.DeserializeObject < TrainingRequest > (requestBody);
var responseMessage = new TrainingResponse {
Id = Guid.NewGuid(), TrainingData = data
};
return new OkObjectResult(responseMessage);
}
}
در اینجا، من از مدل درخواست و پاسخ برای توابع آغازگر HTTP برای هدف نمایش استفاده کردم.
مرحله 5 - عملکردهای Azure را به صورت محلی اجرا و آزمایش کنید
اگر تابع azure را به صورت محلی اجرا کنیم، URL UI swagger تابع azure را مشاهده خواهیم کرد http://localhost:7071/api/swagger/ui
اگر این URL را در مرورگر باز کنیم به این صورت نمایش داده می شود و می توانیم درخواست HTTP را انجام دهیم.
مرحله 6 - توابع را در Azure و تست کنید