使用 Play 框架获取请求参数?
2022-09-01 15:24:03
我正在学习游戏框架,并了解我可以映射请求,例如:/manager/user
GET /manage/:user Controllers.Application.some(user:String)
如何映射这样的请求?/play/video?video_id=1sh1
我正在学习游戏框架,并了解我可以映射请求,例如:/manager/user
GET /manage/:user Controllers.Application.some(user:String)
如何映射这样的请求?/play/video?video_id=1sh1
您至少有两种可能性,让我们称它们为 和 。approach1
approach2
0
typesafe
String
routes
:
GET /approach1 controllers.Application.approach1(video_id: Int ?=0)
GET /approach2 controllers.Application.approach2
行动:
public static Result approach1(int video_id) {
if (video_id == 0) return badRequest("Wrong video ID");
return ok("1: Display video no. " + video_id);
}
public static Result approach2() {
int video_id = 0;
if (form().bindFromRequest().get("video_id") != null) {
try {
video_id = Integer.parseInt(form().bindFromRequest().get("video_id"));
} catch (Exception e) {
Logger.error("int not parsed...");
}
}
if (video_id == 0) return badRequest("Wrong video ID");
return ok("2: Display video no. " + video_id);
}
附言:哈哈,我刚刚意识到你想使用字符串标识符...无论如何,这两种方法将是相似的:)
我会简单地使用它:
GET /play/video Controllers.Application.video(video_id:String)
在控制器上,你当然会有这样的东西:
public static Result video(String video_id) {
return ok("We got video id of: " + video_id);
}
或者,您不必添加,因为 play 似乎默认将参数视为 String,因此它的工作方式也如下所示(至少在最新的 play 中):video_id:String
GET /play/video Controllers.Application.video(video_id)
键入地址栏现在应该提供视图哪些打印:localhost:9000/play/video?video_id=1sh1
我们得到的视频ID: 1sh1
添加更多参数很简单,如下所示:
GET /play/video controllers.Application.video(video_id:String, site:String, page:Integer)
控制器:
public static Result video(String video_id, String site, Integer page) {
return ok("We got video id of: " + video_id + " site: " + site + " page: " + page);
}
键入地址栏现在应该提供视图哪些打印:localhost:9000/play/video?video_id=1as1&site=www.google.com&page=3
我们得到的视频ID: 1as1 网站: www.google.com 页: 3
欢迎您^^。