use*_*833 25 java playframework-2.0
我正在学习游戏框架,并了解我可以映射请求,例如/manager/user:
GET /manage/:user Controllers.Application.some(user:String)
Run Code Online (Sandbox Code Playgroud)
我如何映射请求/play/video?video_id=1sh1?
bie*_*ior 24
你至少有两种可能,让我们称他们approach1和approach2.
0是一个很好的候选人,因为在它之上建立一些条件是最容易的.它也是typesafe,并预先验证自己.我会在一开始就推荐这个解决方案.String因此您需要将其解析为整数,并在需要时另外验证.routes:
GET /approach1 controllers.Application.approach1(video_id: Int ?=0)
GET /approach2 controllers.Application.approach2
Run Code Online (Sandbox Code Playgroud)
动作:
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);
}
Run Code Online (Sandbox Code Playgroud)
PS:大声笑我刚刚意识到你想要使用字符串标识符......无论如何这两种方法都是相似的:)
Mau*_*ähä 20
我会简单地使用:
GET /play/video Controllers.Application.video(video_id:String)
Run Code Online (Sandbox Code Playgroud)
在控制器你当然会有,像:
public static Result video(String video_id) {
return ok("We got video id of: " + video_id);
}
Run Code Online (Sandbox Code Playgroud)
或者,您不必添加,video_id:String因为默认情况下播放似乎将参数视为String,因此它也可以这样工作(至少在最新播放时):
GET /play/video Controllers.Application.video(video_id)
Run Code Online (Sandbox Code Playgroud)
键入localhost:9000/play/video?video_id=1sh1地址栏现在应该给出打印的视图:
我们得到了视频ID:1sh1
添加更多参数很简单,如下所示:
GET /play/video controllers.Application.video(video_id:String, site:String, page:Integer)
Run Code Online (Sandbox Code Playgroud)
控制器:
public static Result video(String video_id, String site, Integer page) {
return ok("We got video id of: " + video_id + " site: " + site + " page: " + page);
}
Run Code Online (Sandbox Code Playgroud)
键入localhost:9000/play/video?video_id=1as1&site=www.google.com&page=3地址栏现在应该给出打印的视图:
我们获得了视频ID:1as1网站:www.google.com页面:3
你很受欢迎^^.
好的,我刚刚阅读了文档,我的理解是你需要
GET /play/video Controllers.Application.video()
Run Code Online (Sandbox Code Playgroud)
然后在控制器中调用HttpRequest对象的getQueryString
http://www.playframework.com/documentation/api/2.1.0/java/index.html
| 归档时间: |
|
| 查看次数: |
39052 次 |
| 最近记录: |