当前位置: 首页 > 知识库问答 >
问题:

ASP。Net Web API Swashbuckle如何忽略HttpRequestMessage

利俊迈
2023-03-14

我正在使用Swashbuckle为API生成文档。我的控制器方法如下:

[ResponseType(typeof(CategoryCollectionModel))]
        public HttpResponseMessage Get(HttpRequestMessage request, [FromUri]Paging paging)
        {
            var input = new CategoriesListQuery.Input { Page = paging.Page, Size = paging.Size };
            var result = this.queryInvoker.Execute<CategoriesListQuery.Input, CategoriesListQuery.Result>(input);
            var items = Mapper.Map<CategoryCollectionModel>(result);

            return request.CreateResponse(HttpStatusCode.OK, items);
        }

Swashbuckle将< code>HttpRequestMessage视为生成的文档中的一个参数。有没有办法配置Swashbuckle忽略< code>HttpRequestMessage,因为它只是出于测试目的才包含在签名中?

共有2个答案

费承载
2023-03-14

我从“http://www . morganskinner . com/2016/02/ignitioning-parameters-in-swash buckle . html”中找到了解决方法

总结:

在Swashbarle中,您可以插入操作“过滤器”,用于更改发出的数据——过滤器将传递发出的操作的上下文,您可以对弹出的数据进行修改。然后我所要做的就是创建一个过滤器来查找此数据类型,并从结果中删除相应的数据。我最终得到了这个…

     public class IgnoreHttpRequestMessageOperationFilter : IOperationFilter
  {
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, 
                      ApiDescription apiDescription)
    {
      apiDescription.ParameterDescriptions
        .Where(desc => desc.ParameterDescriptor.ParameterType 
            == typeof(HttpRequestMessage))
        .ToList()
        .ForEach(param =>
        {
          var toRemove = operation.parameters
            .SingleOrDefault(p => p.name == param.Name);

          if (null != toRemove)
            operation.parameters.Remove(toRemove);
        });
    }
  }

有了这个类,我只需要将其插入swagger配置文件中,如下所示。。。

c.OperationFilter<IgnoreHttpRequestMessageOperationFilter>();

为我工作。谢谢“摩根”

姬成荫
2023-03-14

请参考这里的讨论。简而言之,不要像在输入参数中那样传入< code>HttpRequestMessage,而是模仿< code>{controller}。请求属性。

 类似资料:
  • 问题内容: 我正在尝试为api 编写Web服务。因此,我编写了一个MyLogRecord类,该类继承自LogRecord。我用JAX- B注释对此类进行了注释,包括,因此它将忽略未注释的字段和属性。当我启动tomcat时,出现错误,并且其他类没有默认的构造函数,但是没有带注释的方法对Level类或任何其他类进行任何引用。这些由父类引用。 我的子类具有需要定义的所有内容。如何使JAX-B完全忽略父类

  • 问题内容: 我一直在使用带有詹金斯的PHP_CodeSniffer,我的build.xml是为phpcs配置的,如下所示 我想忽略以下警告 如何忽略行长警告? 问题答案: 您可以创建自己的标准。Zend一个非常简单(使用PEAR安装后,在我的Debian安装中)。基于它创建另一个,但是忽略行长位: 并设置。 (可选)如果您只想在触发之前增加字符数,请重新定义规则:

  • 问题内容: 背景 大约30分钟前,我才开始使用grunt。所以,请忍受我。 但我有一个相当简单的脚本,它将查看我的js,然后将其全部压缩到一个文件中。 码 题 我的main.min.js每次都包含在编译中。这意味着我的min.js正在获得2x,4x,8x,16x等。围绕此的最佳方法是添加异常并忽略吗? 问题答案: 在src数组的 末尾 ,添加 这将排除它。!将其变成排除对象。 http://gru

  • 我正在测试Quarkus应用程序,我想忽略一些测试。 测试类用,以及带有 我试图使用注释,但它不起作用,被忽略的测试无论如何都会执行。 这是代码: 有人知道我怎么才能做到这一点吗?

  • 问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc

  • 问题内容: 这个问题本质上是相反的这一个 我有这样的方法: 当我加载它时,Hibernate抱怨我没有称为的属性。但是我不想要一个叫做-我不需要存储数据的属性-这仅仅是逻辑。 hibernate状态: org.hibernate.PropertyNotFoundException:在com.mycomp.myclass类中找不到空置属性的设置器… 我可以在方法中添加注释以使Hibernate忽略它