using Microsoft.AspNetCore.Mvc.Controllers;
|
using Microsoft.OpenApi.Models;
|
using Swashbuckle.AspNetCore.SwaggerGen;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace FlexJobApi.Core
|
{
|
public class CustomOperationIdFilter : IOperationFilter
|
{
|
public void Apply(OpenApiOperation operation, OperationFilterContext context)
|
{
|
// 获取控制器和动作信息(Furion 中通过 ActionDescriptor 获取)
|
if (context.ApiDescription.ActionDescriptor is not ControllerActionDescriptor actionDescriptor)
|
return;
|
|
// 自定义 OperationId 规则:例如“控制器名_动作名”
|
var controllerName = actionDescriptor.ControllerName;
|
var actionName = actionDescriptor.ActionName;
|
|
// 设置最终的 OperationId
|
operation.OperationId = $"{controllerName}-{actionName}";
|
}
|
}
|
}
|