如何在 Play 中将 url 段转换为单个参数!框架

Posted

技术标签:

【中文标题】如何在 Play 中将 url 段转换为单个参数!框架【英文标题】:How to turn a url segment into a single parameter in Play! Framework 【发布时间】:2012-01-01 11:27:41 【问题描述】:

问题

我希望 url 段here/is/a/request/to/letsay/a/user 在 Play 中变成一个单独的参数orginalRequest!路线

为什么

为了使用 JSON 和 AJAX 解决同源策略,我们决定在我们自己的服务器上运行 web services client,将所有 JSON 调用重定向到外部 REST API。

剧中有没有办法!我可以威胁 /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());

【问题讨论】:

【参考方案1】:

Play 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"

【讨论】:

谢谢,很高兴这将在 2.0 中工作,但我仍在使用 1.2.3 版本【参考方案2】:

您可以从您的控制器中使用request.path and request.uri 提取您需要的信息,然后使用提取的信息调用您的其他方法。

【讨论】:

但是在路由文件夹中怎么做呢?您如何获得对 /api/../../../ 的所有调用以转到 Application.api()?

以上是关于如何在 Play 中将 url 段转换为单个参数!框架的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将单个数组转换为嵌套数组? [复制]

如何在 Postgres 中将布尔数组转换为单个布尔值或单个字符串

在 NetworkOnMainThreadException 中将 url 转换为位图 [重复]

如何在 swift 3 中将单个对象作为参数发布到 http 请求中

如何在 Python 中将单个字符转换为其十六进制 ASCII 值?

如何在 Swift 中将此 var 字符串转换为 URL