查找控制器ActionModel的API状态代码 [英] Find API Status Codes for Controller ActionModel

查看:106
本文介绍了查找控制器ActionModel的API状态代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对此问题进行改进,在添加它们之前,如何在ApplicationModelProvider中找到ActionModel操作的所有现有状态代码?

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

当前正在浏览 action.Filters [0] .StatusCode ,但是无法在实际代码中访问该属性。
在添加之前需要查看所有 array 列表中API Controller Actions的状态代码已经存在。

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过滤器[ 0]作为测试

did filters[0] as a test

Net Core API:使ProducesResponseType全局参数或自动化

    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>());
    ...
}


推荐答案

首先强制转换为ProducesResponseTypeAttribute,并获取StatusCode
参见下面的代码,

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;

这篇关于查找控制器ActionModel的API状态代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆