C# web API - квадратная нотация в строке запроса - PullRequest
0 голосов
/ 28 марта 2020

Я создаю набор веб-API, которые возвращают данные в формате JSON. Внешнее приложение выполняет запрос http (GET) следующим образом:

http://localhost: 58807 / api / items / search? Qualifier = year & sort [0] [field] = Year & sort [0] [dir ] = desc & sort [1] [field] = Title & sort [1] [dir] = as c

, и это метод, который управляет запросом http:

[HttpGet]
[Route("search")]
public IHttpActionResult GetItems(string qualifier, IEnumerable<Dictionary<string, string>> sort)
{
     Does something;
}

Это проблема: в то время как параметр qualifier правильно оценен, вместо параметра sort (квадратная скобка в строке запроса) используется null. Что не так?

Заранее спасибо. Filippo

1 Ответ

0 голосов
/ 28 марта 2020

В ASP. NET Web API 2 привязка не работает (используется ApiController из пространства имен System.Web.Http).

В ASP. NET Core 3.1 Web API the привязка работает (при использовании ControllerBase из пространства имен Microsoft.AspNetCore.Mvc).

Разница заключается в версии.

Одним из способов решения для Web API 2 будет анализ запроса:

var sortParameters = Request.Query.Where(x => x.Key.StartsWith("sort"));
var sortFilters = new List<SortFilter>();
foreach (var sortParamter in sortParameters)
{
    sortFilters.Add(ParseSortParameter(sortParameter)); // TODO: implementation of ParseSortParameter
}


public class SortFilter
{
    public string FieldName { get; set; }
    public string Direction { get; set; }
}

Request относится к типу HttpRequest.

...