Как создать многоразовые перехватчики в ктор? - PullRequest
1 голос
/ 18 апреля 2019

В ktor, кажется, что способ сделать индивидуальные проверки прав доступа через перехватчики, например так:

route("/portal") {
   route("articles") { … }
   route("admin") {


    intercept(ApplicationCallPipeline.Features) { … } // verify admin privileges
      route("article/{id}") { … } // manage article with {id}
      route("profile/{id}") { … } // manage profile with {id}
   }
}

Каков наилучший способ извлечь логику перехватчика для повторного использования для других маршрутов в другом месте кодовой базы

1 Ответ

1 голос
/ 20 апреля 2019

извините за опоздание.В моем коде я создал маршруты, некоторые маршруты имеют перехватчик для измерения и записи времени выполнения, а другие нет.Таким образом, я сделал функцию для этого, следуя примеру в документации (https://ktor.io/advanced/pipeline/route.html#), а затем у меня есть, но эта функция вокруг блока маршрутов, который необходимо измерить.

Пожалуйста, найдите мой кодниже

install(Routing) {
    val konfig = HoconKonfigAdapter()
    val contextPath = konfig.get("ktor.deployment.context-path")
    route("$contextPath/api/v1") {
        val registry = feature(Metrics).registry

        healthEndPoints()
        metricsEndPoints(registry)
        routeWithMeasureTime {
            catalogSiEndPoints()
            reunionCatalogEditoEndPoints()
            telesurveillanceCatalogEditoEndPoints()
            catalogLegacyEndPoints()
        }
    }
}

все маршруты внутри блока routeWithMeasureTime будут перехвачены и измерены. Другой, нет.

Надеюсь, это поможет событию так поздно.

...