如何在 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 段转换为单个参数!框架的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Postgres 中将布尔数组转换为单个布尔值或单个字符串
在 NetworkOnMainThreadException 中将 url 转换为位图 [重复]
如何在 swift 3 中将单个对象作为参数发布到 http 请求中