Find API Status Codes for Controller ActionModel

…衆ロ難τιáo~ 提交于 2020-01-16 07:38:06

问题


Improving upon this question, how do I Find All the Existing Status Codes for ActionModel action in ApplicationModelProvider, before adding them?

Currently looking through action.Filters[0].StatusCode in debugger, however cannot access the property in actual code. Need to see what Status codes already exist for API Controller Actions in all array list, before adding it .

did filters[0] as a test

Net Core API: Make ProducesResponseType Global Parameter or Automate

    foreach (ControllerModel controller in context.Result.Controllers)
    {
        foreach (ActionModel action in controller.Actions)
        {
            Type returnType = action.ActionMethod.ReturnType.GenericTypeArguments[0].GetGenericArguments()[0];

            action.Filters.Add(new ProducesResponseTypeAttribute(StatusCodes.Status510NotExtended));
            action.Filters.Add(new ProducesResponseTypeAttribute(returnType, StatusCodes.Status200OK));
            action.Filters.Add(new ProducesResponseTypeAttribute(returnType, StatusCodes.Status500InternalServerError));
        }
    }

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    ...   
    services.TryAddEnumerable(ServiceDescriptor.Transient<IApplicationModelProvider, ProduceResponseTypeModelProvider>());
    ...
}

回答1:


First cast as ProducesResponseTypeAttribute, and get StatusCode See code below,

foreach (var filter in action.Filters)
{
    if (filter.GetType() == typeof(ProducesResponseTypeAttribute))
    {
         var producesResponseTypeAttribute = (filter as ProducesResponseTypeAttribute)
         var statusCode = producesResponseTypeAttribute.StatusCode;


来源:https://stackoverflow.com/questions/59671768/find-api-status-codes-for-controller-actionmodel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!