2016-12-22 4 views
0

В этом методеУкажите требуемые свойства сложного объекта входного параметра в Swagger UI

/// <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 имеют некоторые требуемые свойства и некоторые являются необязательными. Есть ли способ указать это в параметрах API Swagger UI?

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; } 
    } 

enter image description here

ответ

1

Да, если вы украшаете свойства модели API с RequiredAttribute то свойство не будет отображаться как "факультативный" в Swagger UI:

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

Для сложных объектов вы можете увидеть опциональность свойств модели, нажав кнопку «Модель», а не han «Пример значения» в столбце «Тип данных» раздела «Параметры».

+0

это работает, если «YourProperty» является прямым параметром моего api, но в моем случае параметр ActivityLogFilterOptions является входным параметром, и одно из свойств ActivityLogFilterOptions является необязательным. – JerryGoyal

+0

Вы можете увидеть опциональность свойств модели, нажав «Модель», а не «Примерное значение» в столбце «Тип данных» раздела «Параметры». – strickt01

+0

эй, что сработало! так глупо от меня. – JerryGoyal

Смежные вопросы