我正在研究一个简单的 Finatra API 示例,但是在请求正文中使用多个字段时,无法为 POST 请求使用案例类。
这是我的案例类和控制器的示例:
class SaleResource extends Controller {
post("/sales") { sale: Sale =>
s"$sale"
}
}
case class Sale(
user: Option[String],
streetAddress: Option[String]
)
我使用以下请求正文 JSON 向该路由发送发布请求:
{
"user": "Foo Barrington",
"streetAddress":"Baz Street"
}
响应:
Sale(Some(Foo Barrington),None)
响应显示用户正在正确反序列化,但由于某种原因,我无法填充 streetAddress 字段。
另外,我注意到当我将这些字段中的任何一个设置为String
而不是Option[String]
我只得到不成功的 500 个响应时。
我尝试过的事情:
Some(streetAddress)
匹配该字段字符串值或“未找到”的case 语句,当它是None
. 在这些情况下,它仍然在说它streetAddress
不是None
。curl
向邮递员和邮递员提出请求。
我总是可以从Sales
对象访问用户字段,但streetAddress
如果我将测试元素添加到案例类,则永远不能访问(或请求正文中的任何其他字段)。
我希望这两个字段都能被识别,因为它们都在请求中提供。一般来说,我对 Scala/Finatra 比较陌生,所以我可能只是错误地使用了 Finatra 库或 Case 类。
编辑:似乎将字段名称更改为不混合/驼峰式可以解决所有问题,但这似乎是奇怪的行为。