Как добавить параметр строки запроса в FakeRequest в Play Framework 2.3?

Вот маршрут, соответствующий моему методу контроллера:

GET /my-resources controllers.MyResourceController.list(from: String ?= null, pageSize: Integer ?= null, sort: String ?= null)

У меня нет проблем с использованием параметров from, pageSize и sort в моем запросе, но я не могу найти, как это сделать с фильтрами. Я хотел бы иметь возможность фильтровать каждое поле объекта, но я хочу найти способ избежать добавления каждого свойства моего объекта в маршрут (например: код, имя, описание...)

Тип вызова, который должен работать:

https://myapi.com/my-resources?sort=name,description&name=MyName&description=Blablabla

В моем контроллере я применяю фильтры к своему запросу к базе данных, просматривая request().queryString(). Итак, мой вопрос: как добавить параметры строки запроса в FakeRequest, чтобы проверить мой контроллер? Если у вас есть лучший подход к передаче фильтров в запросе, не стесняйтесь.

Спасибо


person c4k    schedule 29.12.2014    source источник


Ответы (1)


Строка запроса анализируется из URI, который вы указываете для своего FakeRequest, поэтому вы можете создать FakeRequest следующим образом:

FakeRequest(GET, "/my-resources?sort=name,description&name=MyName&description=Blablabla")

И это будет работать нормально.

person mavarazy    schedule 29.12.2014
comment
Это сработало, спасибо. Я использовал конструктор noarg для FakeRequest. В любом случае, было бы более практично иметь сеттер... Есть ли у вас какие-либо предложения по лучшей практике применения фильтров к REST API с помощью Play? - person c4k; 29.12.2014
comment
Мы делаем это стандартным способом playframework.com/documentation/2.3.6/ScalaHttpFilters :) - person mavarazy; 29.12.2014
comment
На самом деле я имел в виду фильтры для фильтрации таких объектов, как name=Foo, начало›29/12/2014 и т. д. ;) - person c4k; 29.12.2014