Size: a a a

Scala User Group

2020 July 03

ΛВ

Λнтон Войцишевский... in Scala User Group
И ошибку сделать кастомную
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Кидать например 403 зачем-то
источник

NP

Nikita Pedorich in Scala User Group
В скудной доке http4s сказано, что если хочется как-то реагировать на отсутствие параметров, то надо сделать их Option и потом в роуте обрабатывать эту ситуацию
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
ну это вполне логично
источник

NP

Nikita Pedorich in Scala User Group
Но если у меня два или три параметра то там такая куча из матчей выходит
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
ᛒᚨᚱᛏᛟᛋᛋᛟ
самое забавное что там скорее всего и будет опциональный параметр на который он будет ругаться
В тапире делаешь без опшна и ловишь потом ошибку десериализации
источник

NP

Nikita Pedorich in Scala User Group
как-то более удобно можно их компоузить?
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
Nikita Pedorich
как-то более удобно можно их компоузить?
параметры?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Nikita Pedorich
Но если у меня два или три параметра то там такая куча из матчей выходит
mapN например
источник

NP

Nikita Pedorich in Scala User Group
ᛒᚨᚱᛏᛟᛋᛋᛟ
параметры?
Обработку Option параметров
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
Nikita Pedorich
Обработку Option параметров
 object PageRequest {
   def unapply(
       params: Map[String, collection.Seq[String]]
   ): Option[Vnel[ParseFailure, PageRequest]] = {
     val validParams = Set("foo_id")
     pageRequestQueryParam(validParams, "foo_id")(params)
   }
 }
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
например так
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
в общем руками можно их читать
источник

NP

Nikita Pedorich in Scala User Group
Что меня еще удивило, так это что можно определить дополнительную валидацию к типу параметра, но ее ошибка теряется тоже?
Есть вот такой параметр
 QueryParamDecoder[String].emap { input: String =>
   Foo
     .withNameEither(input)
     .leftMap { error: NoSuchMember[Foo] =>
       ParseFailure(s"Unknown Foo ${error.notFoundName}", error.getMessage())
     }
 }
И
сообщение теряется, просто 404 получаю в ответ тоже
источник

NP

Nikita Pedorich in Scala User Group
Foo - Enumeratum Enum
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
Nikita Pedorich
Что меня еще удивило, так это что можно определить дополнительную валидацию к типу параметра, но ее ошибка теряется тоже?
Есть вот такой параметр
 QueryParamDecoder[String].emap { input: String =>
   Foo
     .withNameEither(input)
     .leftMap { error: NoSuchMember[Foo] =>
       ParseFailure(s"Unknown Foo ${error.notFoundName}", error.getMessage())
     }
 }
И
сообщение теряется, просто 404 получаю в ответ тоже
а что ты в эндпоинте с ошибкой делаешь?
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
ᛒᚨᚱᛏᛟᛋᛋᛟ
 object PageRequest {
   def unapply(
       params: Map[String, collection.Seq[String]]
   ): Option[Vnel[ParseFailure, PageRequest]] = {
     val validParams = Set("foo_id")
     pageRequestQueryParam(validParams, "foo_id")(params)
   }
 }
т.к. тут у меня Vnel я делаю fold
источник

NP

Nikita Pedorich in Scala User Group
ᛒᚨᚱᛏᛟᛋᛋᛟ
а что ты в эндпоинте с ошибкой делаешь?
Ничего? Там просто параметр через :?
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
и ParseFailure отдаю как плохой ответ
источник

ᛒᚨᚱᛏᛟᛋᛋᛟ... in Scala User Group
ᛒᚨᚱᛏᛟᛋᛋᛟ
и ParseFailure отдаю как плохой ответ
в своей модельке конечно же
источник