2014-12-29 8 views
8

Qui è il percorso corrispondente al mio metodo di controllo:Come aggiungere il parametro stringa di query a FakeRequest in Play Framework 2.3?

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

Non ho alcun problema ad utilizzare from, pageSize e sort parametri nella mia domanda ma non riesco a trovare il modo di fare con i filtri. Mi piacerebbe essere in grado di filtrare ogni campo dell'entità ma voglio trovare un modo per evitare di aggiungere ogni proprietà della mia entità nel percorso (es: codice, nome, descrizione ...)

Tipo di chiamata che dovrebbe funzionare:

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

Nel mio controller, applico filtri sulla mia query di database si naviga request().queryString(). Quindi la mia domanda è come aggiungere i parametri di una stringa di query in FakeRequest per testare il mio controller? Se hai un approccio migliore per passare i filtri nella richiesta, non esitare.

Grazie

risposta

8

stringa di query viene analizzata dal URI, che fornite al vostro FakeRequest, in modo da poter creare FakeRequest in questo modo:

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

e sarebbe funzionare bene.

+0

Ha funzionato, grazie. Stavo usando il costruttore noarg di 'FakeRequest'. Ad ogni modo, sarebbe stato più pratico avere un setter ... Hai qualche suggerimento su una buona pratica per applicare i filtri su un'API REST con Play? – c4k

+0

Lo stiamo facendo in modo standard https://www.playframework.com/documentation/2.3.6/ScalaHttpFilters :) – mavarazy

+0

In realtà intendevo filtri per filtrare un'entità come name = Foo, inizio> 29/12/2014 ecc. ;) – c4k