t3c*_*b0t 5 c# json http-post swagger asp.net-core-webapi
有没有办法指定 swagger 的示例请求?甚至可能是多个?
该Try it out按钮仅显示通用值,例如:
{
"firstName": "string",
"lastName": "string"
}
Run Code Online (Sandbox Code Playgroud)
为了
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当您必须首先编辑所有值时,使用大型对象变得非常困难。我知道我可以使用 Postman,我也可以使用,但是能够使用 swagger创建多个美观且有用的示例会非常好。
And*_*ebb 19
使用 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; }
}
Run Code Online (Sandbox Code Playgroud)
现在,当我单击“尝试一下”(对于User在消息正文中采用模型的 POST 操作)时,我得到默认值:-
{
"firstName": "Jane",
"lastName": "Austin"
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ler 18
在.Net5中,您可以在 Startup.cs 中向 Swagger 添加 SchemaFilter
public override void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SchemaFilter<ExampleSchemaFilter>();
});
}
Run Code Online (Sandbox Code Playgroud)
在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"),
};
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |