quarkus - 如何为 GraphQL 请求定义 HTTP 过滤器?
问题描述
我使用Quarkus 1.6.1.Final版本和使用SmallRye GraphQL的 GraphQL 实现。我的目标是定义逻辑来检查对端点的每个请求(查询+突变)的用户权限。/graphql
所以,我试图找到类似 jax-rs 的东西,ContainerRequestFilter
但对于 GraphQL。你有什么想法吗?我试图定义ContainerRequestFilter
,但它只捕获 RestEasy 请求而不是 GraphQL 请求。
解决方案
我自己正在研究这个。似乎 GraphQL 直接注册了 Vert.X 路由调用 [ 1 ],而不是使用 Undertow(servlets) 或 RestEASY(jaxrs)。这样它就可以更轻松地完成部分结果之类的事情。
您将要查看使用 RouteFilter 注释拦截 Vert.X 请求。我已经包含了下面的链接,但它的工作原理很像来自 jax-rs 的 ContainerRequestFilter。我从 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
推荐阅读
- three.js - DXGF 模型未显示在场景中
- swift - 如何从 AppDelegate 返回当前窗口
- angular - 打印 Validator for Reactive Form 的最小长度
- html - 使用 Bootstrap 4 的菜单栏不一致
- html - 无法从父组件在子组件中打开表单 - “无法读取属性 xxx”
- java - 可终结对象如何至少需要 2 个垃圾回收周期才能被回收?
- java - Java:无法理解如何从其他类调用实例
- javascript - 窗口对象中是否有 string.find() 的等价物?
- python - 使用 django rest 框架将数据保存到 Postgres DB
- elasticsearch - 在弹性搜索中匹配名称