rest api的JS客户端可以将int和string作为某个字段的值发送.
{
field1: "123",
field2: "456"
}
{
field1: 123,
field2: 456
}
Run Code Online (Sandbox Code Playgroud)
以下是应该转换json请求正文的case类的play动作:
case class Dto(field1: Int, field2: Int)
object Dto {
implicit val reads = Json.reads[Dto]
}
def create = Action.async(BodyParsers.parse.json) { implicit request =>
request.body.validate[Dto].map {
dto => someService.doStuff(dto).map(result => Ok(Json.toJson(result)))
}.recoverTotal {
e => jsErrorToBadRequest(e)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我发送带有int值的json值,它可以正常工作.但是如果field1或field2是字符串("123","456"),它就会失败,因为request.body.validate需要Int.
但问题是JS客户端从输入字段发送值,输入字段转换为字符串.
处理整数或字符串的最佳方法是什么?(所以这个动作应该在两种情况下都将json转换为dto)
我正在使用Elasticsearch在数据库中搜索名称,并且希望它模糊以允许出现较小的拼写错误。根据我在此问题上找到的建议,我使用“匹配”和“模糊性”而不是“模糊性”,这似乎更加准确。这是我的查询:
{ "query":
{ "match":
{ "last_name":
{ "query": "Beach",
"type": "phrase",
"fuzziness": 2
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,即使我使用last_name“ Beach”获得了很多结果(我知道至少有100个),但在查询返回的前10个匹配中,我也获得了last_name“ Beech”和“ Berch”的结果。有人可以帮助我先弄清楚确切的匹配方法吗?