Как определить HTTP-фильтр для запросов GraphQL?
Я использую Quarkus 1.6.1.Final с реализацией GraphQL с использованием SmallRye GraphQL. Моя цель - определить логику для проверки разрешений пользователей на каждый запрос (запрос + мутация), сделанный на/graphql
конечная точка. Итак, я пытаюсь найти что-то вроде jax-rsContainerRequestFilter
но для GraphQL. У вас есть идеи, как это сделать? Я пытался определитьContainerRequestFilter
но он перехватывает только запросы RestEasy, но не GraphQL.
0 ответов
Я сам разбирался в этом. Похоже, что GraphQL напрямую регистрирует вызов маршрутизации Vert.X [1], а не использует Undertow(сервлеты) или RestEASY(jaxrs). Это сделано для того, чтобы ему было легче делать такие вещи, как частичные результаты, насколько я могу судить.
Вы захотите посмотреть на перехват запросов Vert.X с помощью аннотации RouteFilter. Я добавил ссылку ниже, но она очень похожа на ContainerRequestFilter из jax-rs. Я скопировал образец кода из справочного руководства Quarkus [2], чтобы предоставить быстрый пример:
package org.acme.reactive.routes;
import io.vertx.ext.web.RoutingContext;
public class MyFilters {
@RouteFilter(100)
void myFilter(RoutingContext rc) {
// Put your logic here
// continue the filtering of the request
rc.next();
}
}
2: https://quarkus.io/guides/reactive-routes#intercepting-http-requests