如何在 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)

我在查询中使用frompageSizesort 参数没有问题,但我找不到如何使用过滤器。 我希望能够过滤实体的每个字段,但我想找到一种方法来避免在路由中添加我的实体的每个属性(即:代码、名称、描述......)

应该有效的调用类型:

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 客户端库

Play Framework 2.4 全局对象迁移

如何在实时多人游戏 Google Play 游戏服务中向其他参与者发送有关房间创建的数据

如何在 Play 中的所有响应中设置标题!框架 2.7 (Java)