Intellij Idea IntelliJ HTTP客户端,GraphQL请求存储在多个.http文件中

r7xajy2e  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在使用 IntelliJ 2022.3.1(终极版)
我有多个包含GRAPHQL请求的.http文件,为了方便起见,这些文件保存在Java应用程序中测试包的资源文件夹的子文件夹中。这些请求定义在多个文件中,因为对于其中许多请求来说,查询相当大,很难在单个文件中导航。
我的目标是使运行这些查询尽可能容易,以简化测试。
我已经添加了一些环境变量,比如hostname或者token,我在头中设置了这些变量。我还定义了live template,以便在添加新请求时快速准备请求头。
此外,我想做的是:

  • 从文件读取查询
  • 运行查询从所有的文件与一次点击

第一个问题是:当我在.http文件中有一个GRAPHQL请求时,我可以成功地触发它。但是当我在一个文件中保存完全相同的查询并在触发请求时尝试加载它时,我得到验证异常。这是不可能的吗?
例如,以下请求可以正常工作:

GRAPHQL {{path}}
Authorization Bearer {{token}}
Content-Type: application/graphql

query {
    total {
        amount
        currency
    }
}

但在将相同的查询保存到文件中并按如下方式加载后,它在应用程序中失败:

GRAPHQL {{path}}
Authorization Bearer {{token}}
Content-Type: application/graphql

< ./query.graphql


执行GraphQL请求时出错!请求解析在图形ql处失败。kickstart。servlet。HttpRequestHandlerImpl。解析调用输入(HttpRequestHandlerImpl.java:72)
在进一步挖掘之后,似乎是请求传递到端点的方式不同。看起来像是在主体中提供查询时-请求被打包在JSON中,从文件加载请求时-请求被原样发送
见差异:

// This works
POST /my-graphql/graphql, payload={"query": "query {\n total {\n amount\n currency\n }\n}"}

// This fails
POST /my-graphql/graphql, payload=query { total { amount currency } }

看起来像IntelliJ的错误?
第二个问题是,当我右键单击一个文件夹来运行所有请求时,IntelliJ给了我运行所有测试的选项-这不是我想要的。是否可以创建运行配置来执行来自多个文件的所有.http请求?

ogq8wdun

ogq8wdun1#

现在看来,上述两种情况都不可能实现:
1.从文件加载查询:此处报告的错误:https://youtrack.jetbrains.com/issue/IDEA-310914/IntelliJ-Http-client-and-GraphQL-request-fails-when-loading-query-from-a-file
1.同时触发多个.http文件-不可能,此处使用投票功能:https://youtrack.jetbrains.com/issue/IDEA-239323

相关问题