Я создал класс, который хочу использовать для отправки информации о сортировке и нумерации страниц, чтобы применить ее к моим большим коллекциям.У меня есть служба .NET Core Web API, которая будет получать запросы и принимать мой объект в качестве ввода FromQuery
.Я хотел придерживаться определенных соглашений об именах (например, Microsoft Rest API Guidelines ) для имен параметров, таких как $orderby
, $top
, $skip
и т. Д., И аннотировал свойства класса с помощьюJsonProperty
.
Тем не менее, в сгенерированном swagger doc они просто отображаются как имя свойства, что является проблемой в тех случаях, когда мое свойство называется, например, Take
, но параметр запроса должен быть $top
.Я хотел бы, чтобы сгенерированные документы соответствовали, чтобы не создавать путаницы для потребителей API.Все, что я читаю, указывает на то, что это должно сработать, и я озадачен, почему это не для меня.
Вот мой класс с аннотациями, использующими Newtonsoft.Json.JsonPropertyAttribute
[JsonObject]
public class QueryParams {
[JsonProperty( "$orderBy" )]
public string OrderBy { get; set; }
[JsonProperty( "$skip" )]
public int? Skip { get; set; }
[JsonProperty( "$top" )]
public int? Take { get; set; }
[JsonProperty( "$maxpagesize" )]
public int? MaxPageSize { get; set; }
[JsonProperty( "$count" )]
public bool? IncludeCount { get; set; }
}
А затем, например, мой метод действия Web API будет выглядеть примерно так
[HttpGet( "type/{type}" )]
public async Task<IActionResult> GetByType(
string type,
[FromQuery]QueryParams parameters )
{
/* ... */
}
Iпробовал несколько вещей, таких как попытка использовать MapType
, как отмечено в Переопределить схему для определенных типов , но просто не повезло.Цените любые идеи, которые кто-либо может дать по этому поводу.