Я хочу написать две службы, а затем использовать orElse, чтобы объединить две службы, что означает service_one или service_two. Все они PartialFunctions.Что такое правильный способ использования оператора илиElse в Scala?
Служба одно:
val usersService = HttpService {
case request @ GET -> Root/"users"/IntVar(userId) =>
Ok("test")
}
Служба два является:
val versionService = HttpService{
case req @ GET -> Root/"version" => {
val jsonmap = ("origin" -> req.remoteAddr.getOrElse("unknown ip"))
Ok(compact(render(jsonmap)))
}
}
, а затем я хочу, чтобы объединить потом вместе.
val service = userService orElse versionService //the error happens here.
Ошибка:
[error] F:\workspace\frankcheckAPI\src\main\scala\com\cardaccess\ServiceApp.scala:46: value orElse is not a member of org.http4s.HttpService
[error] val service = usersService orElse versionService
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
Как совместить затем сделать то работает, как если случай соответствует пути первого сервиса Первой работы службы, если дело соответствует пути второго сервиса. вторая служебная работа.
пс: а неравнодушные люди:
объектHTTPService это определить, как:
type HttpService = Service[Request, Response]
object HttpService {
/** Alternative application which lifts a partial function to an `HttpService`,
* answering with a [[Response]] with status [[Status.NotFound]] for any requests
* where the function is undefined.
*/
def apply(pf: PartialFunction[Request, Task[Response]], default: HttpService = empty): HttpService =
Service.lift(req => pf.applyOrElse(req, default))
...
}
Что такое обслуживание? Какую структуру вы используете? –