-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GraphiQL expects 200 status for errors #88
Comments
Hi @sporto - sorry it took a while to get to this. I'm not sure if I understand the problem; when you say "bad queries", do you mean a invalid query with a correct syntax (e.g. a field that isn't defined is queried), or a query that returns GraphiQL does not know about the network status/http status code/etc - instead it handles errors if the defined fetcher rejects the query and/or an error is thrown during the execution (defined here). So it is possible to render the error logs without a specific status code - express-graphql implementation is an example of this. |
hi @asiandrummer using graphiql 0.5 this is the behaviour I see. Consider a query where one attribute doesn't exist e.g. In this case I have setup my graphql server to return a 200 with the errors. GraphiQL shows the error on the right panel. But returned 200 when an error happens is not what we think should happen. So in the screenshot above I have set up the server to return 422 with the error. GraphiQL just shows The expected behaviour would be to have GraphiQL show the error on the right if there is an error on the response body, even if the status is 422. |
I see. Just checking in case - is your server
FYI, our example fetcher definition does this from
|
@asiandrummer I don't follow your question, can you please rephrase it? |
Sorry; what I meant was a "client-side fetcher code", not a "server". I was just curious how your fetcher is defined. |
I see this error: I see what you mean about the fetcher, I'm using axios, so you are saying that the error is most likely happening there? I will investigate this. This is how it is defined at the moment: import 'graphiql/graphiql.css'
import React from 'react'
import ReactDOM from 'react-dom'
import GraphiQL from 'graphiql'
import axios from 'axios'
function graphQLFetcher(graphQLParams) {
return axios({
url: '/graphql',
method: 'POST',
data: graphQLParams,
})
}
ReactDOM.render(<GraphiQL fetcher={graphQLFetcher} />, document.body) |
Ok, that is the problem, thanks so much for helping debug this. Closing this issue. |
:D glad you were able to resolve the issue - awesome! |
…flowtype-2.30.4 Update eslint-plugin-flowtype to version 2.30.4 🚀
In order to render an error on the right panel, GraphiQL expects the response to have a 200 status. In case of a bad query, the server needs to respond with 200 in order the see the error in the UI.
We had a case where bad queries were send to the server e.g. asking for something that doesn't exists. Looking at the server logs wouldn't show the issue as everything was 200. So we changed our graphql server to return 422 on bad queries.
But now GraphiQL doesn't show anything on the right, as it expects 200.
So I am not sure about this, is this a graphql spec issue or should GraphiQL handle some errors and try to render the response?
The text was updated successfully, but these errors were encountered: