///
/// action没有httpmethod attribute的情况下根据action的开头名称给与默认值
///
/// IApplicationBuilder
/// 默认给定的HttpMethod
public static void AutoHttpMethodIfActionNoBind(this IApplicationBuilder app, string defaultHttpMethod = null)
{
//从容器中获取IApiDescriptionGroupCollectionProvider实例
var apiDescriptionGroupCollectionProvider = app.ApplicationServices.GetRequiredService();
var apiDescriptionGroupsItems = apiDescriptionGroupCollectionProvider.ApiDescriptionGroups.Items;
//遍历ApiDescriptionGroups
foreach (var apiDescriptionGroup in apiDescriptionGroupsItems)
{
foreach (var apiDescription in apiDescriptionGroup.Items)
{
if (string.IsNullOrEmpty(apiDescription.HttpMethod))
{
//获取Action名称
var actionName = apiDescription.ActionDescriptor.RouteValues[“action”];
//默认给定POST
string methodName = defaultHttpMethod ?? “GET”;
//根据Action开头单词给定HttpMethod默认值
if (actionName.StartsWith(“get”, StringComparison.OrdinalIgnoreCase))
{
methodName = “GET”;
}
else if (actionName.StartsWith(“put”, StringComparison.OrdinalIgnoreCase))
{
methodName = “PUT”;
}
else if (actionName.StartsWith(“delete”, StringComparison.OrdinalIgnoreCase))
{
methodName = “DELETE”;
}
apiDescription.HttpMethod = methodName;
}
}
}
}
swagger 如何根据名称自动加入[HttGet] 属性
最新推荐文章于 2023-07-11 18:05:11 发布