我已经在play框架中编写了这个Web服务。
控制器
def getByGenre(genre: String) = Action {
val result = Await.result(Movies.getByGenre(genre), 5 seconds)
Ok(toJson(result))
}
路由
GET /movies/genre/:genre controllers.MoviesController.getByGenre(genre: String)
然而,用户可以选择多个类型。因此,我需要将genre参数转换为List [String]
我还需要知道如何使用CURL将该Array参数传递给Web服务。
答案 0 :(得分:2)
如果您可以将genres
参数作为查询字符串的一部分传递,只需使用不同的值重复该参数,然后像这样检索它:
def getByGenre() = Action.async { implicit request =>
val genres = request.queryString.get("genres")
Movies.getByGenre(genres).map { movies =>
Ok(toJson(movies))
}
}
您的路线将是:
GET /movies/genre controllers.MoviesController.getByGenre()
另请注意,您需要将Movies.getByGenre
签名更改为:
def getByGenre(genres: Option[Seq[String]]): Seq[Movies]
最终的网址会像@mfirry所示:
myhost.com/movies/genre?genre=action&genre=drama
最后,正如您可能已经注意到的那样,我已从您的操作中移除了阻止代码。在控制器上使用Await
意味着在最坏的情况下,您的操作将至少阻塞5秒。我建议你看一下Play文档的以下页面:
https://www.playframework.com/documentation/2.5.x/ScalaAsync