我正在使用play framework和scala创建一个Web服务。该服务获取网址和语言,并使用此信息,但我无法将网址添加到服务中。
我在路线中有这个 GET / trans / $ url<(http%3A%2F%2Fa)> /:lang controllers.Application.getTranslation(url:String,lang:String)
并在申请中: def getTranslation(iri:String,lang:String)= Action {implicit request => 等
我希望得到类似的东西 '/ trans / htp:// a / es'(它的http而不是htp,但我不能在这里写)
它可以吗?因为我已经尝试了一切,但我无法做到。是一种传递url作为参数的方法吗?
答案 0 :(得分:1)
你必须在两侧进行网址逃脱和不可见。它被称为URL编码或百分比编码(因为使用以%开头的组合重写了转义字符) https://en.wikipedia.org/wiki/Percent-encoding
如果您的客户端位于js中,这是一个可以为您提供信息的问题: Encode URL in JavaScript?
这里有一个很好的scala库,可以用来编码和解码URL persent编码。 https://github.com/theon/scala-uri
我自己开始使用scala(我在playframework上的大部分工作仍然是Java),所以我不知道那里是否有更好的scala uri库。
编辑: 你让我很好奇所以我搜索了一下: http://www.motobit.com/util/url-encoder.asp 你应该小心双方的编码。