解析表单 Url 编码请求到案例 Class
Parsing Form Url Encoded Request To Case Class
我有一种情况,我收到对我的 Play 服务的请求,形式为 url 编码的内容。但问题是请求中的字段名称与我的案例 class 字段名称不同,那么如何轻松创建我的案例 class 的实例?例如,
有效载荷
To="john"&From="amy"
案例class定义
case class Payload(to : String, from : String)
这不是一个表单,所以我不创建 Form
并使用 bindRequest
(即使我认为这不会起作用)。
如果这是 JSON 有效载荷,那么我可以创建自己的读取,但这是 url 形式编码的,所以是否可以创建我自己的等效 "Reads"?
尽管请求不是通过网络表单提交的,但您仍应使用常规表单处理机制处理 application/x-www-form-urlencoded
请求。尝试定义以下模型和映射
case class Payload(to: String, from: String)
val form = Form(
mapping(
"To" -> nonEmptyText,
"From" -> nonEmptyText
)(Payload.apply)(Payload.unapply)
)
请注意,在表单映射中,字段名称大小写不必与模型中对应的大小写匹配,例如,To
与 to
。重要的是字段顺序和类型。现在使用常规 form.bindFromRequest
.
处理请求
我有一种情况,我收到对我的 Play 服务的请求,形式为 url 编码的内容。但问题是请求中的字段名称与我的案例 class 字段名称不同,那么如何轻松创建我的案例 class 的实例?例如,
有效载荷
To="john"&From="amy"
案例class定义
case class Payload(to : String, from : String)
这不是一个表单,所以我不创建 Form
并使用 bindRequest
(即使我认为这不会起作用)。
如果这是 JSON 有效载荷,那么我可以创建自己的读取,但这是 url 形式编码的,所以是否可以创建我自己的等效 "Reads"?
尽管请求不是通过网络表单提交的,但您仍应使用常规表单处理机制处理 application/x-www-form-urlencoded
请求。尝试定义以下模型和映射
case class Payload(to: String, from: String)
val form = Form(
mapping(
"To" -> nonEmptyText,
"From" -> nonEmptyText
)(Payload.apply)(Payload.unapply)
)
请注意,在表单映射中,字段名称大小写不必与模型中对应的大小写匹配,例如,To
与 to
。重要的是字段顺序和类型。现在使用常规 form.bindFromRequest
.