获取Operation Object Swagger 2.0的方法

时间:2015-04-16 19:41:30

标签: c# swagger swagger-ui

这可能是一个非常简单的问题,但我似乎无法弄明白。如何使用swagger 2.0获得Operations对象的方法?

从过渡指南中: "大多数对象的结构已更改(例如“操作对象”,“参数对象”)。在其他更改中,在许多情况下,不是声明对象的类型,而是指向对象的属性名称将声明其类型。例如,对于操作,您将拥有一个名为" get"的属性名称。指向操作对象。因此,方法字段将从对象本身中删除。"

https://github.com/swagger-api/swagger-spec/wiki/Swagger-1.2-to-2.0-Migration-Guide

所以我的问题是,如果你有一个操作对象,你将如何获得该方法?特别是在c#?

我尝试将操作过滤器从1.2迁移到2.0

void IOperationFilter.Apply(Swashbuckle.Swagger.Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
        {
            if (apiDescription.ActionDescriptor.ReturnType == typeof(HttpResponseMessage))
            {
                switch (operation.Method)
                {
                    ...

                }
            }

但是,在swagger 2.0中不再提供operation.Method。

1 个答案:

答案 0 :(得分:1)

在swagger 2.0中,操作结构发生变化,因此它不再具有方法类型的属性。因此,如果您拥有操作对象,则无法获取该方法,但ApiDescription具有HttpMethod属性,该属性将指示操作是Get,Put,Post还是Delete。之前的操作是什么。现在可以使用

检索方法
apiDescription.HttpMethod.ToString()