java - 拦截器在 Spring Boot GraphQL 中不起作用

标签 java spring spring-boot graphql interceptor

我正在使用 graphql-java-kickstart/graphql-spring-boot,我想创建一个拦截器以在处理请求后添加 HTTP header 。

当我向后端发送 graphql 请求时,拦截器没有被触发。但是有些调用会触发拦截器。例如,当我在浏览器中打开/graphiql 时,我看到拦截器被触发了,但是当我从 graphiql 客户端发送 graphql 请求时却没有。知道为什么吗?有人对此有经验吗?

我的配置是这样的:

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Autowired
    private TestInterceptor testInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(testInterceptor).addPathPatterns("/**");
    }
}

还有我的拦截器:

@Slf4j
@Component
public class TestInterceptor extends HandlerInterceptorAdapter {

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
            throws Exception {
        // post processing
        log.info("hello there");
    }

}

最佳答案

我有以下在我的项目中成功运行的拦截器:

  1. 我的网络配置:
@Configuration
public class WebConfig implements WebMvcConfigurer {
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(requestInterceptor);
    }
    
    @Autowired
    private ControllerExecInterceptor requestInterceptor;
}

其中 ControllerExecInterceptor 定义为:

@Component
public class ControllerExecInterceptor extends HandlerInterceptorAdapter {
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws AccessDeniedException, Exception {
        // ...
    }

    @Override
    public boolean postHandle(HttpServletRequest request, HttpServletResponse 
                            response, Object handler) throws {
        // ...
    }
}

关于java - 拦截器在 Spring Boot GraphQL 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69101004/

相关文章:

java - 如何在 Spring WebFlux @ExceptionHandler 中访问 RequestBody?

java - 如何使用 JPA 和 Spring 在列表中查找具有字段的不同行?

java - 如何使用 Jackson 和 spring-boot 将简单的 Kotlin 数据类映射到 json 或从 json 映射

java - AWS SDK 2 承担角色

java - Spring 属性文件将属性设置为 null

java - 捕获框架内的按键

java - 如何在 Android 设备中未安装任何应用程序的情况下打开 doc 和 ppt 文件?

spring - 在 Spring 从服务类调用另一个 Controller

java - Gradle拉取依赖时版本冲突

java - 对象到 xml 映射,格式为 spring bean 定义