代码之家  ›  专栏  ›  技术社区  ›  Alexei - check Codidact

swaggerRequestExample属性在ASP.NET MVC 5(.NET Framework 4.5.2)中不起作用

  •  2
  • Alexei - check Codidact  · 技术社区  · 6 年前

    我在玩弄 Swashbuckle.Examples package (3.10.0)在ASP.NET MVC项目中。但是,我不能让请求示例出现在UI中。

    配置 (swaggerconfig.cs)

    public static void Register()
    {
        var thisAssembly = typeof(SwaggerConfig).Assembly;
    
        GlobalConfiguration.Configuration
            .EnableSwagger(c => {
                 c.SingleApiVersion("v1", "TestApp.Web");
                 c.IncludeXmlComments(string.Format(@"{0}\bin\TestApp.Web.xml", System.AppDomain.CurrentDomain.BaseDirectory));
                 c.OperationFilter<ExamplesOperationFilter>();
                 c.OperationFilter<DescriptionOperationFilter>();
                 c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
                    })
                .EnableSwaggerUi(c => { });
     }  
    

    请求示例类

    public class EchoRequestExample : IExamplesProvider
    {
        public object GetExamples()
        {
            return new EchoInput { Value = 7 } ;
        }
    }
    
    public class EchoInput
    {
        public int Value { get; set; }
    }
    

    行动

    [HttpGet]
    [Route("Echo")]
    [CustomApiAuthorize]
    [SwaggerRequestExample(typeof(EchoInput), typeof(EchoRequestExample))]
    [ResponseType(typeof(EchoServiceModel))]
    public HttpResponseMessage Echo([FromUri] EchoInput model)
    {
        var ret = new EchoServiceModel
        {
            Username = RequestContext.Principal.Identity.Name,
            Value = value
        };
        return Request.CreateResponse(HttpStatusCode.OK, ret);
    }
    

    SwaggerUI显示XML注释和输出元数据(模型和包含默认值的示例),但不显示请求示例。我依附于流程和 EchoRequestExample.GetExamples 没有被击中。

    问题: 如何使swaggerRequestExample属性在ASP.NET MVC 5中工作?

    注: Windows标识用于授权。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Helder Sepulveda    6 年前

    我知道这种感觉,很多开销,举个例子,我为此挣扎了一段时间,所以我创建了自己的swashbuckle叉子,在尝试合并我的想法失败后,我最终分离并重新命名了我的项目,并推动到nuget,这里是: Swagger-Net

    这样的例子是:

        [SwaggerExample("id", "123456")]
        public IHttpActionResult GetById(int id)
        {
    

    这里是完整的代码: Swagger_Test/Controllers/IHttpActionResultController.cs#L26

    想知道在招摇过市的用户界面上是什么样子的,这里是:
    http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=IHttpActionResult#/IHttpActionResult/IHttpActionResult_GetById

        2
  •  1
  •   Alexei - check Codidact    6 年前

    我收到图书馆老板的答复 here :

    Swagger请求示例只能在[httppost]操作上设置

    目前还不清楚这是一个设计选择还是仅仅是一个限制,因为我发现[httpget]示例也很相关。