withFormUrlEncodedBody 的输入数据类型是什么?
What is data type of the input of withFormUrlEncodedBody?
def MakeRequest(method:String,url:String, data : Map[String,String]) = {
route(FakeRequest(method,url).withHeaders("X-Requested-With" -> "1").withFormUrlEncodedBody(data)).get
}
错误在 withFormUrlEncodedBody(data)。它表示预期的 (String,String),实际的:Map[String,String]。 (String,String) 数据类型到底是什么?
我使用了 data:(String,String)
但输入只接受 1 个映射。它会接受多重映射。以下代码无需传递参数即可运行:
route(FakeRequest(method,url).withHeaders("X-Requested-With" -> "1").withFormUrlEncodedBody("a" -> "b", "c" -> "d")).get
如果您查看 documentation,您会看到它的类型为 (String, String)*
。首先(T1,T2)
代表Tuple2[T1,T2]
。其次,*
代表可变长度参数,这意味着它接受您要发送的 Tuple2
的数量。这可能是 List
或其他类型的 Seq
因此,以您原来的示例为例,您可以执行以下操作:
def MakeRequest(method:String,url:String, data : (String,String)*) = {
route(FakeRequest(method,url)
.withHeaders("X-Requested-With" -> "1")
.withFormUrlEncodedBody(data:_*)).get
}
def MakeRequest(method:String,url:String, data : Map[String,String]) = {
route(FakeRequest(method,url).withHeaders("X-Requested-With" -> "1").withFormUrlEncodedBody(data)).get
}
错误在 withFormUrlEncodedBody(data)。它表示预期的 (String,String),实际的:Map[String,String]。 (String,String) 数据类型到底是什么?
我使用了 data:(String,String)
但输入只接受 1 个映射。它会接受多重映射。以下代码无需传递参数即可运行:
route(FakeRequest(method,url).withHeaders("X-Requested-With" -> "1").withFormUrlEncodedBody("a" -> "b", "c" -> "d")).get
如果您查看 documentation,您会看到它的类型为 (String, String)*
。首先(T1,T2)
代表Tuple2[T1,T2]
。其次,*
代表可变长度参数,这意味着它接受您要发送的 Tuple2
的数量。这可能是 List
或其他类型的 Seq
因此,以您原来的示例为例,您可以执行以下操作:
def MakeRequest(method:String,url:String, data : (String,String)*) = {
route(FakeRequest(method,url)
.withHeaders("X-Requested-With" -> "1")
.withFormUrlEncodedBody(data:_*)).get
}