我是JSON-RPC的新手。我已经使用Scala代码完成了REST END点的创建,但是从未使用过json-rpc。 我有以下要求。我需要从mongo数据库中删除某些记录,并且需要使用json-rpc为此创建一个休息终点。 我可以使用以下端点进行操作
def removeAllCourses(@ApiParam(hidden = true) organisationId: String): Route = {
pathEndOrSingleSlash {
operationName("DELETE:/coursesassignable/organisations/{organisationId}") {
delete {
authorizeAndGetToken(tokenValidator)(Set(UserRole.Admin), Set(UserRole.Editor)) {
directiveTokenContent =>
complete {
handleErr {
courseAssignableAdapterFactory.courseAssignableAdapter.removeAllCoursesFromOneOrg(organisationId).run(env).value
}
}
}
}
}
}
}
这是可行的,但是我需要使用JSON-RPC调用来做到这一点。我浏览了文档和某些库,但不确定如何将其集成到当前的代码结构中。 我创建了一个
之类的RPCRequest
类
case class RPCRequest(jsonrpc: String, method: String, params: RequestParams, id: Int)
object RPCRequest {
implicit val codec: CodecJson[RPCRequest] = CodecJson.derive[RPCRequest]
}
其中jsonrpc将为2.0,方法是删除方法。我不确定如何将删除方法与rpc调用集成在一起。 如果我喜欢以下内容
@Path("/coursesassignable/organisations")
def deleteCourseFromAllOrgs: Route = {
path("coursesassignable"/"organisations") {
operationName("DELETE:/coursesassignable/organisations") {
delete {
entity(as[RPCRequest]) { request =>
authorizeAndGetToken(tokenValidator)(Set(UserRole.Admin), Set(UserRole.Editor)) {
directiveTokenContent =>
complete {
/* . what code should come here....*/
}
}
}
}
}
}
}
removeAllCoursesFromOneOrg
方法在我的适配器类中。