githubv4 icon indicating copy to clipboard operation
githubv4 copied to clipboard

Provide errors response for error handling

Open int128 opened this issue 6 years ago • 3 comments

GitHub GraphQL API returns errors response on error cases such as not found, for example:

{
  "data": {
    "repository": null
  },
  "errors": [
    {
      "type": "NOT_FOUND",
      "path": [
        "repository"
      ],
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "message": "Could not resolve to a Repository with the name 'non-existent-repository'."
    }
  ]
}

Currently Query() does not provide any errors but it should do for error handling, for example:

err := client.Query(ctx, &q, vars)
if errors, ok := githubv4.Errors(err); ok {
  if len(errors) > 0 && errors[0].Type() == "NOT_FOUND" {
    // not found case
  }
}

Thank you for the great work!

int128 avatar Feb 21 '19 04:02 int128

This is workaround, we can identify if errors is provided by checking pointer type as follows:

var q *struct{}
if err := client.Query(ctx, &q, vars); err != nil {
  if q != nil {
    return errors.Wrapf(err, "this is an error such as not found or invalid query")
  }
  return errors.Wrapf(err, "this is an error such as network or bad json")
}

int128 avatar Feb 21 '19 04:02 int128

👍 I think actually shurcooL/graphql#31 or rather shurcooL/graphql#33 should fix this and this library here doesn't need to change much. Is there anything we can do to help bring this forward?

mweibel avatar Mar 07 '19 07:03 mweibel

I think actually shurcooL/graphql#31 or rather shurcooL/graphql#33 should fix this and this library here doesn't need to change much.

Agreed.

Is there anything we can do to help bring this forward?

Sorry, I won't have the ability to focus on this for the next few weeks, but I'd like to after that. This is an important API decision, and I'd like to take care to find a good solution rather than rushing.

I suggest iterating on this on forks as a workaround if you need a solution sooner. Reporting results here would be helpful. Thanks.

dmitshur avatar Apr 11 '19 05:04 dmitshur