Вызовите json-rpc используя scala - PullRequest
0 голосов
/ 24 февраля 2019

Я новичок в JSON-RPC.Я закончил создание точек REST END, используя scala-код, но никогда не использовал json-rpc.У меня есть следующее требование.Мне нужно удалить определенные записи из базы данных Монго, и мне нужно создать конечную точку отдыха для этого с помощью 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 в моем классе адаптера.

...