首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphQL-java查询超时

GraphQL-java查询超时
EN

Stack Overflow用户
提问于 2018-10-29 23:31:22
回答 1查看 2.3K关注 0票数 1

是否有一种方法可以用GraphQL实现来设置查询执行的超时?这似乎是GraphQL 文档推荐的一个相当基本的安全问题,但我找不到任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 09:38:35

为此,您可以使用GraphQL Java 仪器仪表

下面的示例为每个数据获取程序设置3秒的超时时间。您可以使用传入的InstrumentationFieldFetchParameters实例将超时应用于特定的数据获取器(如果希望对整个查询进行超时,则可能在查询结构上执行一次超时)。

代码语言:javascript
复制
public class TimeoutInstrumentation extends SimpleInstrumentation {
    @Override
    public DataFetcher<?> instrumentDataFetcher(
            DataFetcher<?> dataFetcher, InstrumentationFieldFetchParameters parameters
    ) {
        return environment ->
            Observable.fromCallable(() -> dataFetcher.get(environment))
                .subscribeOn(Schedulers.computation())
                .timeout(3, TimeUnit.SECONDS)
                .blockingFirst();
    }
}

您还可以使用两个现有工具来实现在您发布的页面中提到的其他检查:

还有在请求级别设置超时的选项。不过,这不属于GraphQL的管辖范围。如果使用Spring作为http服务器,则可以使用spring.mvc.async.request-timeout应用程序属性设置全局请求超时。我很肯定其他的web服务器也会有类似的属性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53055345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档