分页播放路线的最佳做法?
Best practices for play routes with pagination?
我是 Play 2 (Scala) 的新手。我需要使用分页来输出列表的成员。这很简单,除了分页部分。
在我的路线文件中我有我的搜索:
GET /find/thing/:type controllers.Application.showType(type: String)
如果我想将整个列表转储到页面,这很好用。
现在,如果我想对其进行分页怎么办?我想我可以做 -
GET /find/thing/:type/:page controllers.Application.showType(type: String, page: Int)
但是如果用户只是在没有页面的情况下键入 "myurl.com/find/thing/bestThing" 会发生什么?显然当它应该自动 "default" 到第 1 页时会出现错误。
有没有办法默认这些参数?如果不是,最佳做法是什么?
谢谢!
两个选项:
- 声明您提到的两条路线(首先在全球范围内使用 parameter with fixed value), then you can use untrail trick,在这种情况下,它会将您的
/find/thing/something/
重定向到 /find/thing/something
(page=1)
您可以使用parameters with default values,那么您的路线如下:
GET /find/thing/:type controllers.Application.showType(type: String, page: Int ?= 1)
生成的 URL 会像:
/find/thing/something?page=123
您可以使用查询字符串参数而不是页码的路径参数。查询字符串参数将允许您在缺少参数时提供默认值。
GET /find/thing/:type controllers.Application.showType(type: String, page: Int ?= 1)
你会像这样使用它们:
/find/thing/bestThing?page=3 // shows page 3
/find/thing/bestThing // shows page 1
我是 Play 2 (Scala) 的新手。我需要使用分页来输出列表的成员。这很简单,除了分页部分。
在我的路线文件中我有我的搜索:
GET /find/thing/:type controllers.Application.showType(type: String)
如果我想将整个列表转储到页面,这很好用。
现在,如果我想对其进行分页怎么办?我想我可以做 -
GET /find/thing/:type/:page controllers.Application.showType(type: String, page: Int)
但是如果用户只是在没有页面的情况下键入 "myurl.com/find/thing/bestThing" 会发生什么?显然当它应该自动 "default" 到第 1 页时会出现错误。
有没有办法默认这些参数?如果不是,最佳做法是什么?
谢谢!
两个选项:
- 声明您提到的两条路线(首先在全球范围内使用 parameter with fixed value), then you can use untrail trick,在这种情况下,它会将您的
/find/thing/something/
重定向到/find/thing/something
(page=1) 您可以使用parameters with default values,那么您的路线如下:
GET /find/thing/:type controllers.Application.showType(type: String, page: Int ?= 1)
生成的 URL 会像:
/find/thing/something?page=123
您可以使用查询字符串参数而不是页码的路径参数。查询字符串参数将允许您在缺少参数时提供默认值。
GET /find/thing/:type controllers.Application.showType(type: String, page: Int ?= 1)
你会像这样使用它们:
/find/thing/bestThing?page=3 // shows page 3
/find/thing/bestThing // shows page 1