使用Scala呼叫json-rpc

时间:2019-02-24 15:56:15

标签: scala json-rpc

我是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方法在我的适配器类中。

0 个答案:

没有答案