【问题标题】:How to extract value from Path parameters in play2 mini?如何从 play2 mini 中的路径参数中提取值?
【发布时间】:2012-11-10 16:18:23
【问题描述】:

我将使用的方法是 DELETE 请求,我有这个 url 用于 web 服务调用:

http://www.localhost:9000/example/com/foo/bar

我想提取 /foo 和 /bar 并将其存储在一个变量中。

有人知道怎么做吗?谢谢!

我将 play2-mini 用于 Web 服务并调度用于 scala 以发出 http 请求。

【问题讨论】:

  • 你使用的是 java 还是 scala 的 play2-mini ?

标签: scala playframework play2-mini


【解决方案1】:

Play 有一种非常复杂的参数传递方式,那就是通过 Routes 定义。在你的 conf/Routes 文件中定义一个类似的路由

GET  /example/com/:foo  controllers.yourcontroller.deleteAction(foo: String)

什么时候进入

http://www.localhost:9000/example/com/user

在您的浏览器中,将调用由您的控制器定义的deleteAction,字符串“user”将在其参数foo 中传递给它。在那里你可以操纵它。 请注意,URI 后面跟冒号的部分是动态的。它将接受任何满足成为字符串要求的内容,并将其存储在 foo 变量中,并将其转发给 deleteAction。

【讨论】:

  • 哎呀!我没有注意到标签。刚刚在身体里看到了[play]。老实说,我不知道有像玩迷你这样的东西。抱歉,我没有资格获得您的帮助。
【解决方案2】:

您可以使用如下代码所示的正则表达式:

object App extends Application { 
  def route = Routes(
    Through("/people/(.*)".r) {groups: List[String] =>
      Action{ 
        val id :: Nil = groups
        Ok(<h1>It works with regex!, id: {id}</h1>).as("text/html") 
      }
    }, 
    {
      case GET(Path("/coco")) & QueryString(qs) => Action{ request =>
        println(request.body)
        println(play.api.Play.current)
        val result = QueryString(qs,"foo").getOrElse("noh")
        Ok(<h1>It works!, query String {result}</h1>).as("text/html") }

      case GET(Path("/cocoa")) => Action{ request =>
        Ok(<h1>It works with extractors!</h1>).as("text/html") }
      },
    Through("/flowers/id/") {groups: List[String] =>
      Action{ 
        val id :: Nil = groups
        Ok(<h1>It works with simple startsWith! -  id: {id}</h1>).as("text/html") 
      }
    }
  )
}

【讨论】:

    猜你喜欢
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2013-05-30
    • 2014-06-15
    • 2021-08-14
    • 2011-09-01
    相关资源
    最近更新 更多