如何通过通用机制让Swagger UI显示简化响应体(无需添加属性)
关于Swagger UI自定义响应体的问题
我有一个API端点,期望Swagger UI中localDate字段的响应示例格式如下:
{ "localDate": "Wednesday, 13 March 2024" }
但在Swagger UI中调用该端点后,实际显示的响应是LocalDate的完整对象结构:
{ "localDate": { "calendar": { "id": "ISO", "name": "ISO", "minYear": -9998, "maxYear": 9999, "eras": [ { "name": "BCE" }, { "name": "CE" } ] }, "year": 2024, "month": 3, "day": 14, "dayOfWeek": 4, "yearOfEra": 2024, "era": { "name": "CE" }, "dayOfYear": 74 } }
相关代码
端点代码
[HttpGet("any-simple-random-object")] [Produces("application/json")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task<ActionResult<AnySimpleObjectResponse>> GetAnySimpleObject() => await Task.FromResult(AnySimpleObjectResponse.CreateRandomObject());
响应生成器代码
public record AnySimpleObjectResponse(LocalDate LocalDate) { public static AnySimpleObjectResponse CreateRandomObject() => new(LocalDate.FromDateTime(DateTime.Now)); }
需求
我需要实现:
- Swagger UI中显示的响应体与预期示例一致
- Postman等外部工具调用时,仍能获取
LocalDate的完整对象结构 - 采用通用机制,无需为每个响应对象或端点单独添加属性
内容的提问来源于stack exchange,提问作者MarekBe
相关产品推荐
相关产品推荐

