假设您的域名,帐户和所有者中有两个实体。如果您正确实现了API,通常会使用以下API:
同样适用于业主。最后,您必须手动编写大量重复代码以从rest API和大量代码中提取参数,以将这些参数转换为适合您的底层数据存储的查询。
是否有任何允许减少样板的框架或方法,类似功能的Apache Olingo版本?
答案 0 :(得分:0)
不会像下面这样简单的本土方法吗?有一些空白需要填补,但是,与框架不同,您可以自由地组织代码。
def createRoute[T](entityName: String,
create: (T) => Route, getter: (UUID) => Route,
patcher: (UUID) => Route,
lister: (Map[String, String]) => Route)
(implicit unmarshaller: FromRequestUnmarshaller[T]) = {
pathPrefix(entityName) {
pathEndOrSingleSlash {
post {
entity(as[T]) { e :T ⇒ create(e) }
} ~
pathPrefix(JavaUUID) { id ⇒
pathEndOrSingleSlash {
get {
getter(id)
} ~ patch {
patcher(id)
}
}
}
}
} ~ pathPrefix(entityName + "s") {
parameterMap => { params: Map[String, String] => lister(params)
}
}
}
val apiRoutes1: Route = createRoute[Account]("account", ...) ~
createRoute[Owner]("owner", ...)