Asp.net Web Api Несколько пользовательских объектов через строку запроса - PullRequest
1 голос
/ 18 октября 2019

Я работаю над API, и я хотел попробовать отсортировать объекты фильтра и разбивки на страницы через строку запроса в форме json.

В настоящее время я вызываю свой API с этим:

baseUrl/reviews?sort={"direction":"asc","field":"time"}&filters=[{"field":"rating","value":9}]&page={"page":1,"items":10}

, и мой контроллер выглядит так

namespace NewApi.Controllers
{
[Route("api/[controller]")]
    [ApiController]
    public class ApiController : ControllerBase
    {
        [HttpGet]
        public JsonResult Search([FromQuery(Name = "sort")] Sort sort, [FromQuery(Name = "Filters")] List<Filter> filters, [FromQuery(Name = "Page")] Page page)
        {
            ... getting data from db be here ..
        }
    }
}

При этом все мои параметры равны нулю.

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

ДругойЧтобы обойти ответ, я увидел, что просто передавал один объект json и десериализовал его в контроллере, но я все еще не смог получить какие-либо данные из строки запроса.

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

1 Ответ

0 голосов
/ 18 октября 2019

То, что вы пытаетесь сделать с непримитивными объектами, должно быть выполнено с использованием тела http-запроса. Если вы хотите сделать это в строке запроса, придерживайтесь примитивов.

baseUrl/reviews?sortDirection=asc&sortField=time&filterField=rating&filterValue=9&page=1&items=10


[Route("api/[controller]")]
[ApiController]
public class ApiController : ControllerBase
{
    [HttpGet]
    public JsonResult Search(string sortDirection, string sortField, string filterField, string filterValue, int page, int items)
    // I would also recommend returning IHttpActionResult, much more robust
    {
        ... getting data from db be here ..
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...