【问题标题】:Indicate required properties of complex input parameter object in Swagger UI在 Swagger UI 中指示复杂输入参数对象的必需属性
【发布时间】:2017-05-08 01:01:00
【问题描述】:

在这个方法中

/// <summary>
        /// Gets activity logs.
        /// </summary>
        /// <param name="locationId">Location id.</param>
        /// <param name="filter">Activity log filter options.</param>
        /// <response code="200">OK</response>
        [ResponseType(typeof(ActivityLogResponse))]
    public async Task<HttpResponseMessage> FetchActivityLogs(int locationId, ActivityLogFilterOptions filter)
                    {
            }

ActivityLogFilterOptions 有一些必需的属性,有些是可选的。有没有办法在 Swagger UI API 参数中表明这一点?

ActivityLogFilterOptions 类:

/// <summary>
    /// Represents an activity log filter options.
    /// </summary>
    public class ActivityLogFilterOptions
    {
        /// <summary>
        /// Gets or sets the device ids to which the activity logs to be fetched.
        /// </summary>
        public string DeviceIds { get; set; }

        /// <summary>
        /// Gets or sets the start date for of the search.
        /// </summary>
        [DateTimeCompare("ToDate",
            ValueComparison.IsLessThan, ErrorMessage = "From date must be earlier than end date.")]
        public DateTime? FromDate { get; set; }

        /// <summary>
        /// Gets or sets the end date for the search.
        /// </summary>
        [DateTimeCompare("FromDate",
            ValueComparison.IsGreaterThan, ErrorMessage = "To date must be later than from date.")]
        public DateTime? ToDate { get; set; }

        /// <summary>
        /// Gets or set the page index.
        /// </summary>
        [Required]
        [Range(0, int.MaxValue)]
        public int? PageIndex { get; set; }

        /// <summary>
        /// Gets or sets the maximum record count per page.
        /// </summary>
        [Required]
        [Range(1, short.MaxValue)]
        public int? RecordsPerPage { get; set; }

        /// <summary>
        /// Gets or sets the activity log groups.
        /// </summary>
        public string Groups { get; set; }
    }

【问题讨论】:

    标签: c# .net swagger swashbuckle


    【解决方案1】:

    是的,如果您使用 RequiredAttribute 修饰 API 模型的属性,那么该属性将不会在 Swagger UI 中显示为“可选”:

    [Required]
    [JsonProperty(PropertyName = "your_property")]
     public string YourProperty {get; set;}
    

    对于复杂对象,您可以通过单击“参数”部分的“数据类型”列中的“模型”而不是“示例值”来查看模型属性的可选性。

    【讨论】:

    • 如果 'YourProperty' 是我的 api 的直接参数,则此方法有效,但在我的情况下,ActivityLogFilterOptions 是输入参数并且 ActivityLogFilterOptions 的属性之一是可选的。
    • 您可以在“参数”部分的“数据类型”列中单击“模型”而不是“示例值”来查看模型属性的可选性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 2015-06-19
    • 2018-11-27
    相关资源
    最近更新 更多