c# - 是否可以更改 NSwag 生成的示例值部分的内容?

标签 c# asp.net-core openapi nswag

我们正在使用 NSwag 为我们的 API 生成 swagger 页面。我们有一个虚构的 asp.net core 2.2 Controller ,生成的 swagger 页面如下所示: enter image description here

是否可以更改示例值的内容(以黄色突出显示)?我们希望显示 testParameter 的实际样本值,而不仅仅是“字符串”。是否有我们可以使用的数据注释,或者其他一些可用于覆盖此行为的覆盖机制?

我们使用的 NSwag 版本是 NSwag.AspNetCore 13.0.2。

定义模型的类是:

public class TestQuery : IRequest<TestResponse>
{
    [DefaultValue("test1")]
    [JsonProperty("testParameter")]
    public string TestParameter { get; set; }
}

我们使用 MediatR,因此使用 IRequest。

这是 Controller 类:

[Authorize, Route("api/route/test")]
[ApiController]
public class TestController : ControllerBase
{
    private readonly IMediator _mediator;

    /// <summary>
    /// TestController constructor
    /// </summary>
    /// <param name="mediator">Dependency Injected mediator reference</param>
    public TestController(IMediator mediator)
    {
        _mediator = mediator;
    }

    /// <summary>
    /// Async method which retrieves a test response for a given testParameter string
    /// </summary>
    /// <remarks>
    ///
    ///        Sample testParameters:   "test1", "test2", "test3"
    ///
    ///        Sample Request:
    ///             {
    ///                 "testParameter": "test1"
    ///             }
    ///
    /// </remarks>
    /// <param name="GetTestResponseQuery">Get test response request model</param>
    /// <returns>A test response</returns>
    [HttpPost]
    public async Task<ApiResponse<TestResponse>> GetTestResponse([FromBody]TestQuery testQuery)
    {
        if (!ModelState.IsValid)
        {
            throw new Exception($"State for model TestQuery is not valid for service {testQuery.TestParameter}");
        }
        else
        {
            var result = await _mediator.Send(testQuery).ConfigureAwait(false);
            return new ApiResponse<TestResponse>(result);
        }
    }
}

谢谢你, 伊夫·罗雄

最佳答案

在您的 TestResponse 类上,在每个属性的 xml 注释中添加 example 标记,该标记将在 swagger 示例中使用。例如

public class TestResponse 
{ 
   /// <summary> 
   /// Property description 
   /// </summary> 
   /// <example>Sample value</example>  
   public string Property { get; set; } 
 }

关于c# - 是否可以更改 NSwag 生成的示例值部分的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57859498/

相关文章:

c# - 如何在 ASP.NET Core MVC 中显示特定的 ModelState 错误?

django - 使用 Django Rest Framework 在 OpenAPI 端点上自定义分组

c# - 构造函数应该将自己的参数直接初始化为私有(private)成员还是通过公共(public)字段(以 C# 为中心)?

c# - 使用映射到数据库中某些种子数据的枚举是不好的做法吗?

c# - Skype 邀请信息

c# - 用于额外计算的 RavenDb map 索引

asp.net-core - 找不到与命令 "dotnet-watch"匹配的可执行文件

openapi - 如何在OpenAPI 3.0中全局设置Accept header ?

Swagger:动态模式

c# - 如何使用 WCF 流式传输 XElement/XDocument?