如何在 Play Framework 2.3 中向 FakeRequest 添加查询字符串参数?
Posted
技术标签:
【中文标题】如何在 Play Framework 2.3 中向 FakeRequest 添加查询字符串参数?【英文标题】:How to add query string parameter to FakeRequest in Play Framework 2.3? 【发布时间】:2015-02-25 14:15:18 【问题描述】:这里是我的控制器方法对应的路由:
GET /my-resources controllers.MyResourceController.list(from: String ?= null, pageSize: Integer ?= null, sort: String ?= null)
我在查询中使用from
、pageSize
和sort
参数没有问题,但我找不到如何使用过滤器。
我希望能够过滤实体的每个字段,但我想找到一种方法来避免在路由中添加我的实体的每个属性(即:代码、名称、描述......)
应该有效的调用类型:
https://myapi.com/my-resources?sort=name,description&name=MyName&description=Blablabla
在我的控制器中,我通过浏览request().queryString()
对我的数据库查询应用过滤器。
所以我的问题是如何在FakeRequest
中添加查询字符串参数以测试我的控制器?
如果您有更好的方法在请求中传递过滤器,请不要犹豫。
谢谢
【问题讨论】:
【参考方案1】:查询字符串是从您提供给 FakeRequest 的 URI 中解析出来的,因此您可以像这样创建 FakeRequest:
FakeRequest(GET, "/my-resources?sort=name,description&name=MyName&description=Blablabla")
它会正常工作。
【讨论】:
成功了,谢谢。我正在使用FakeRequest
的 noarg 构造函数。无论如何,拥有一个 setter 会更实用……您对使用 Play 在 REST API 上应用过滤器的最佳实践有什么建议吗?
我们以标准方式进行playframework.com/documentation/2.3.6/ScalaHttpFilters :)
实际上我的意思是过滤器来过滤实体,例如 name=Foo, beginning>12/29/2014 等;)以上是关于如何在 Play Framework 2.3 中向 FakeRequest 添加查询字符串参数?的主要内容,如果未能解决你的问题,请参考以下文章
Play Framework:如何不查看文件夹以了解 Play Framework 中的更改
Play Framework 2.3 - 无法连接到远程数据库 Linux (Play) -> Win 7 (MySQL)
Play Framework 2.3 和 javascript websocket 客户端库