首页 > 编程语言 >【ASP.NET Core Swagger】3、注释(Swashbuckle.AspNetCore.Annotations)

【ASP.NET Core Swagger】3、注释(Swashbuckle.AspNetCore.Annotations)

时间:2022-10-16 09:33:28浏览次数:39  
标签:Core ASP AspNetCore Order 订单 input new Swagger public

Swashbuckle.AspNetCore.Annotations包括一组可应用于Controller、Action和Model的自定义属性,以丰富生成的 Swagger

安装Nuget

install-package Swashbuckle.AspNetCore.Annotations

启用注释

builder.Services.AddSwaggerGen(options => {
    options.EnableAnnotations();
});

Action元数据(SwaggerOperationAttribute)

        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="input"></param>
        /// <param name="param1">参数1</param>
        /// <returns></returns>
        [HttpPost("createorder")]
        [SwaggerOperation(
    Summary = "创建订单-概要描述",
    Description = "创建订单-详细描述",
    OperationId = "CreateOrder11",
    Tags = new[] { "Purchase", "Order" }
)]
        public ActionResult<Order> CreateOrder(
            [FromBody] CreateOrderInput input)
        {
            return new Order { };
        }

响应元数据(SwaggerResponseAttributes)

ASP.NET Core 提供了ProducesResponseTypeAttribute用于列出操作可以返回的不同响应的方法。如上所述,这些属性可以与 XML 注释结合使用,以在生成的 Swagger 中包含对每个响应的人性化描述。如果您希望使用单个属性完成所有这些操作,并避免使用 XML 注释,则可以使用SwaggerResponseAttributes 代替:

        [HttpPost("createorder")]
        [SwaggerResponse(200, "订单创建成功", typeof(Order))]
        [SwaggerResponse(400, "参数错误")]
        public ActionResult<Order> CreateOrder(
            CreateOrderInput input, )
        {
            return new Order { };
        }

参数元数据(SwaggerParameterAttribute、SwaggerRequestBodyAttribute)

public ActionResult<Order> CreateOrder(
            [FromBody, SwaggerRequestBody("订单数据", Required = true)] CreateOrderInput input, 
            [FromQuery, SwaggerParameter("参数1", Required = true)] int param1)
        {
            return new Order { };
        }

Model元数据(SwaggerSchemaAttribute)

此注释可以应用于类和属性

    /// <summary>
    /// 创建订单input参数
    /// </summary>
    [SwaggerSchema(Required = new[] { "创建订单input参数" })]
    public class CreateOrderInput
    {
        [SwaggerSchema("订单号", ReadOnly = true)]
        public int ID { get; set; }
        [SwaggerSchema("订单金额")]
        public decimal TotalPrice { get; set; }
        [SwaggerSchema("创建时间", Format = "date")]
        public DateTime CreateTime { get; set; }
    }

模式过滤器?(SwaggerSchemaFilterAttribute)

// Product.cs
[SwaggerSchemaFilter(typeof(ProductSchemaFilter))]
public class Product
{
    ...
}

// ProductSchemaFilter.cs
public class ProductSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        schema.Example = new OpenApiObject
        {
            [ "Id" ] = new OpenApiInteger(1),
            [ "Description" ] = new OpenApiString("An awesome product")
        };
    }
}

标签元数据

默认情况下,Swagger 生成器将使用控制器名称标记所有操作。然后使用这个标签来驱动 swagger-ui 中的操作分组。如果您想为每个组提供描述,您可以通过以下方式为每个控制器名称标签添加元数据SwaggerTagAttribute:

    [SwaggerTag("订单接口")]
    public class OrderController : ControllerBase
    {}

标签:Core,ASP,AspNetCore,Order,订单,input,new,Swagger,public
From: https://www.cnblogs.com/fanfan-90/p/16795640.html

相关文章

  • 【ASP.NET Core Swagger】2、多文档(Group)
    生成器将在单个Swagger文档中包含所有API操作。但是,如有必要,您可以创建多个文档。例如,您可能希望每个API版本都有一个单独的文档。案例添加服务、中间件(v1、v2)b......
  • 【ASP.NET Core Swagger】1、介绍
    介绍:Swagger是为帮助我们生成webapi文档的工具,可以直接从您的路由、控制器和模型生成漂亮的API文档相关Nuget包Swashbuckle.AspNetCore.Swagger:一个Swagger对象模......
  • 学习ASP.NET Core Blazor编程系列六——新增图书(上)
    学习ASP.NETCoreBlazor编程系列一——综述学习ASP.NETCoreBlazor编程系列二——第一个Blazor应用程序(上)学习ASP.NETCoreBlazor编程系列二——第一个Blazor应......
  • .Net Core后端项目部署在Centos 7
    【安装.Net框架】安装.NET之前,请运行以下命令,将Microsoft包签名密钥添加到受信任密钥列表,并添加Microsoft包存储库。打开终端并运行以下命令:sudorpm-Uvhhttps:......
  • asp.net core +vue 导出excel
      定义Excel专用特性名(应用导出表格列名) 引入Nuget包1.Microsoft.AspNetCore.Hosting2.DotNetCore.NPOI   引入包usingNPOI.SS.UserModel;usingN......
  • 如何在ASP.NET Core中获取当前登录的用户标识
    直到ASP.NETCore1.0 RC1:它是System.Security.Claims命名空间中的User.GetUserId().自ASP.NETCore1.0 RC2:您现在必须使用UserManager.您可以创建一个方法来获取......
  • Metasploit训练基础-数据库模块
    数据库当今最常见的数据库通常以行和列的形式将数据存储在一系列的表中,支持用户便捷地访问、管理、修改、更新、控制和组织数据。另外,大多数数据库都使用结构化查询语言(SQ......
  • 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
    win2012server系统 或 win1164位系统出现CefSharp67.00:System.IO.FileNotFoundException:未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到......
  • .Net Core redis 调用报错 '6000 Redis requests per hour' 解决 6000 此调用限制
    问题描述redis是一种基于内存,性能高效的NoSQL数据库,性能高主要就体现在数据交互耗时较短,能够段时快速的对用户的请求做出反应,所以在业务比较复杂或交互量需求大时,必然......
  • MediatR:EF Core中发布领域事件
    领域事件大部分发生在领域模型的业务逻辑方法上或者领域服务上,我们可以在一个领域事件发生的时候立即调用IMediator的Publish方法来发布领域事件。我们一般在聚合根的实体......