Swashbuckle, Swagger Pattern и формат аннотации или XML-комментарий - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь добавить ключевые слова формата и / или шаблона в мою документацию по Swagger. Я использую Swashbuckle и текущую версию. Я использую XML-комментарии, чтобы вставить описания для моих различных полей. Например: Контроллер:

/// <summary>
/// Shows a list with states
/// </summary>
/// <param name="id">The state ID</param>
/// <returns>Offers the state</returns>
[HttpGet("id", Name = "Get")]
public async Task<ActionResult<State>> GetState(string id)
{
State result = GetState(id);
return Ok(result);
}

Я хочу, чтобы в документации по swagger отображалось ключевое слово pattern с выражением регулярного выражения:

'^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$'

Можно ли добавить эту документацию при использовании комментариев или аннотаций в формате XML. Я хотел бы попросить то же самое для ключевого слова формата. Например: 'формат: дата-время'

Возможно ли это, используя XML-комментарии или аннотации с Swashbuckle для автоматической генерации документации Swagger, или для этого потребуется статический файл swagger?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

На проекте есть пример, как использовать его для моделей: https://github.com/domaindrivendev/Swashbuckle/blob/5489aca0d2dd7946f5569341f621f581720d4634/Swashbuckle.Dummy.Core/Controllers/MetadataAnnotatedTypesController.cs#L21

public class PaymentMetadata
{
    [Required]
    public decimal Amount { get; set; }

    [Required, RegularExpression("^[3-6]?\\d{12,15}$")]
    public string CardNumber { get; set; }

    [Required, Range(1, 12)]
    public int ExpMonth { get; set; }

    [Required, Range(14, 99)]
    public int ExpYear { get; set; }

    [StringLength(500, MinimumLength = 10)]
    public string Note { get; set; }
}

Для примитива, как в вашем случае, я не уверен, что он полностью поддерживается, вы можете попробовать что-то вроде:

public async Task<ActionResult<State>> GetState([RegularExpression("PATTERN")]string id)

Если это не сработает, вы можете добавить его, используя IDocumentFilter

0 голосов
/ 15 ноября 2018

Я только что попытался добавить регулярное выражение в один из моих проектов, который использует swagger, и он работал нормально

/// <param name="customerId">^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$</param>
...