我们正在使用jsonbody将主体中的json有效负载转换为scala case类:
val domainObject: Endpoint[String] = post("domain" :: jsonBody[DomainEvent] :: some_more ::
现在我想将一个字段的长度限制为200个字符。当然,我可以复制检索到的DomainEvent并将字段的值截断为200个字符,但这似乎效率不高。有没有一种方法可以轻松地更改jsonBody的行为以包含这种效果?
答案 0 :(得分:1)
这是一个非常自定义的用例,Finch不支持它。出于至少三个我能想到的原因,这是一种习惯:
Content-Length
标头)的大小定义的,而是由字符的长度定义的。但是您可以在解码级别上实现这一点,这仍然比在域模型(案例类)中截断更好。请参阅ref上的文档。
有时,您将需要实现一个函数String => Try[DomainEvent]
,在这里您可以插入实现-在读取需要截断的JSON字段后,将其缩短为200个字符,并在填充时使用DomainEvent
案例类。这样,case类本身就不需要了解有关截断的任何信息。它是特定于端点的,并且发生在将JSON主体解码为case类的层中。