Как превратить сегмент URL в один параметр в Play!Фреймворк - PullRequest
4 голосов
/ 18 ноября 2011

Проблема

Я хочу, чтобы сегмент URL here/is/a/request/to/letsay/a/user превратился в один параметр orginalRequest в Play!route

Почему

Для решения той же политики происхождения с JSON и AJAX мы решили использовать клиент веб-служб , работающий на нашем собственном серверекоторые перенаправляют все вызовы JSON на внешний REST API.

Есть ли способ в Play!Файл маршрута инфраструктуры, который я могу угрожать тому, что когда-либо придет после / api / как один отдельный параметр?

В маршруте:

GET    /api/fromhere/is/what/iwant/as/single/parameter    App.getFromOtherDomain

В приложении:

public void getFromOtherDomain(String orginalRequest){    
   WSRequest req = WS.url("https://api.otherdomain.com/" + orginalRequest);
   Promise<HttpResponse> respAsync = req.getAsync();
   HttpResponse resp = await(respAsync);   
   renderJSON(resp.getJson());
}

Ответы [ 2 ]

5 голосов
/ 23 ноября 2011

В Играть 1.x Вы используете RegEx:

Маршруты:

 GET   /files/{<[a-z0-9/\.]*>name}               Application.download(name)

В Play 2.0 вы можете сделать это немного короче:

Маршруты:

GET   /files/*name                               Application.download(name)

Звоните:

http://yourserver/files/public/downloads/hello.png

В действии загрузки name будет равно "public/downloads/hello.png".

1 голос
/ 19 ноября 2011

В вашем контроллере вы можете использовать request.path и request.uri , чтобы извлечь необходимую вам информацию, а затем вызвать другой метод с извлеченной информацией.

...