Hasura 查询操作异常

Hasura query action exception

遇到了一个小问题(我猜)。我在 docker swarm 环境中创建了 c# rest web API。 Rest API 工作正常 - 通过邮递员测试。然后我尝试在同一个 docker 群环境中编写 Hasura 服务。控制台也工作正常。问题出在查询操作上。

代码:

动作定义:

type Query {
  getWeatherForecast : [WeatherForecastResonse]
}

新类型定义:

type WeatherForecastResonse {
  date : String
  temperatureC : Int
  temperature : Int
  summary : String
}

处理程序:

http://{api ip}:{api port}/WeatherForecast

尝试执行查询时:

query MyQuery {
  getWeatherForecast {
    temperature
    summary
    date
    temperatureC
  }
}

我从响应中得到的只是错误 json:

{
  "errors": [
    {
      "extensions": {
        "internal": {
          "error": "invalid json: Error in $: not enough input",
          "response": {
            "status": 405,
            "body": "",
            "headers": [
              {
                "value": "Mon, 14 Jun 2021 13:54:00 GMT",
                "name": "Date"
              },
              {
                "value": "Kestrel",
                "name": "Server"
              },
              {
                "value": "0",
                "name": "Content-Length"
              },
              {
                "value": "GET",
                "name": "Allow"
              }
            ]
          },
          "request": {
            "body": {
              "session_variables": {
                "x-hasura-role": "admin"
              },
              "input": {},
              "action": {
                "name": "getWeatherForecast"
              }
            },
            "url": "http://{api ip}:{api port}/WeatherForecast",
            "headers": []
          }
        },
        "path": "$",
        "code": "unexpected"
      },
      "message": "not a valid json response from webhook"
    }
  ]
}

我通过使用 postman white 调用得到了想要的响应:http://{api ip}:{api port}/WeatherForecast(GET 方法)

我应该在哪里改进,才能最终通过休息获得理想的结果api?

P.S。 hasura 版本:v2.0.0-alpha.4(也尝试过 v1.3.3)

更新: 发布了新版本的网络 API。 WeatherForecastController 内部包含一个带有 POST 属性的新方法。查询保持不变,但现在 graphql 查询 returns 我想要的。

所以问题是:是否有可能 call/access 网络 api 方法使用带有 Hasura 操作查询的 GET 属性?

不,目前不可能,Hasura 总是向操作处理程序发出 POST 请求:

When the action is executed i.e. when the query or the mutation is called, Hasura makes a POST request to the handler with the action arguments and the session variables.

来源:https://hasura.io/docs/latest/graphql/core/actions/action-handlers.html#http-handler

从 v2.1.0 及更高版本开始,我们可以使用 REST 连接器执行此操作。Hasura Actions RESTConnectors Methods