Это очень нестандартный вариант использования, и Finch его не поддерживает. Это обычай, по крайней мере, по трем причинам, о которых я могу думать:
- Вы не проверяете ввод; вместо этого вы принимаете любую длину, но затем изменяете ее до максимум 200 символов.
- Он применяется не для всего тела, а только для одного конкретного поля.
- Он определяется не размером в байтах (например, заголовок
Content-Length
), а длиной символов.
Но вы могли бы добиться этого на уровне декодирования, что все же лучше, чем усечение в модели предметной области (класс case). См. Документацию по нестандартным декодерам .
В какой-то момент вам нужно будет реализовать функцию String => Try[DomainEvent]
, и именно здесь вы можете подключить свою реализацию - после чтения поля JSON, которое необходимо усечь, сократите его до 200 символов и используйте его при заполнении DomainEvent
корпус класса. Таким образом, сам класс case не должен ничего знать о усечении; это зависит от конечной точки, и это происходит в слое, который декодирует тело JSON в класс case.