В finch мы можем определить маршрутизатор, параметры запроса, тело запроса следующим образом.
case class Test(name: String, age: Int)
val router: Endpoint[Test] = post("hello") { Ok(Test("name", 30)) }
val requestBody: Endpoint[Test] = body.as[Test]
val requestParameters: Endpoint[Test] = Endpoint.derive[Test].fromParams
Преимущество в том, что мы можем составить EndPoint вместе. Например, я могу определить:
Путь запроса — hello, а Параметр должен иметь имя и возраст. (router :: requestParameters
)
Тем не менее, я все еще могу успешно запустить недопустимую конечную точку, которая не включает какой-либо путь запроса (на самом деле нет ошибки компиляции)
Await.ready(Http.serve(":3000", requestParameters.toService))
В результате возвращается 404 не найденная страница. Хотя я ожидаю, что ошибка должна сообщаться раньше, как ошибка компиляции. Интересно, это конструктивный недостаток или это на самом деле зяблик пытается исправить?
Спасибо заранее