9

有没有办法指定招摇的示例请求?甚至可能是多个?

Try it out按钮仅显示通用值,例如:

{
    "firstName": "string",
    "lastName": "string"
}

为了

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

当您必须首先编辑所有值时,使用大型对象变得非常困难。我知道我可以使用 Postman,我也这样做,但是能够使用 swagger 创建多个好看且有用的示例将非常好。

4

2 回答 2

6

使用 ASP.NET Core 3.1、Swagger OAS 3 和 Swashbuckle.AspNetCore 5.4.1,以下模型类 + XML 注释适用于我:-

    /// <summary>
    /// A user.
    /// </summary>
    public class User
    {
        /// <summary>
        /// The user's first name.
        /// </summary>
        /// <example>Jane</example>
        public string FirstName { get; set; }

        /// <summary>
        /// The user's last name.
        /// </summary>
        /// <example>Austin</example>
        public string LastName { get; set; }
    }

现在,当我单击“试用”(对于User在消息正文中采用模型的 POST 操作)时,我得到默认值:-

{
    "firstName": "Jane",
    "lastName": "Austin"
}
于 2020-05-22T12:56:47.377 回答
4

在 .Net5 中,您可以在 Startup.cs 中将 SchemaFilter 添加到 Swagger

public override void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(c =>
    {
        c.SchemaFilter<ExampleSchemaFilter>();
    });
}

在 ExampleSchemaFilter.cs 中,您只需为特定类定义一个 OpenApiObject:

using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

public class ExampleSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.Type == typeof(User))
        {
            schema.Example = new OpenApiObject()
            {
                ["firstName"] = new OpenApiString("John"),
                ["lastName"] = new OpenApiString("Doe"),
            };
        }
    }
}
于 2021-12-28T14:46:55.017 回答