.NET 6进程内Azure函数如何在OpenAPI规范中设置仅日期参数
解决方案:在Azure函数OpenAPI规范中生成仅日期类型参数
要让OpenAPI规范生成仅日期(string($date))类型的参数,而非带时间的string($date-time),可以通过以下两步实现:
将路由参数类型替换为
DateOnly
.NET 6及以上版本提供了DateOnly类型,专门用于表示无时间部分的日期,完全匹配你的需求。修改HttpTrigger的路由约束与函数参数:[FunctionName("GetHistory")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = "history/{itemId}/{channel}/{fromDate:date}/{toDate:date}")] HttpRequest req, string itemId, string channel, DateOnly fromDate, // 替换为DateOnly类型 DateOnly toDate, // 替换为DateOnly类型 ILogger log) { // 函数业务逻辑 return new OkResult(); }路由中添加
:date约束,可确保传入的格式符合日期格式要求。调整
OpenApiParameter的类型配置
将OpenApiParameter的Type属性改为typeof(DateOnly),同时修正参数位置为Path(你的参数在路由路径中,而非Query查询串):[OpenApiParameter( name: "fromDate", In = ParameterLocation.Path, Required = true, Type = typeof(DateOnly), Summary = "起始日期", Description = "获取价格的起始日期,仅使用日期部分(时间将被忽略)", Visibility = OpenApiVisibilityType.Important)] [OpenApiParameter( name: "toDate", In = ParameterLocation.Path, Required = true, Type = typeof(DateOnly), Summary = "结束日期", Description = "获取价格的结束日期,仅使用日期部分(时间将被忽略)", Visibility = OpenApiVisibilityType.Important)]
完成上述修改后,生成的OpenAPI规范中,fromDate和toDate的类型会自动变为string($date),满足仅日期的需求。
内容的提问来源于stack exchange,提问作者Björn
相关产品推荐
相关产品推荐

