GraphQL / React выдает сетевую ошибку JSON.parse: неожиданный символ в строке 1 столбца 1 данных JSON - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть конечная точка Java GraphQL, работающая по адресу localhost: 8080 / someApplication / graphql (CORS активирована), и когда я пишу запрос в Altair (Firefox-plugin), я получаю действительный ответ:

Альтаир

POST http://localhost:8080/someApplication/graphql

запрос:

{
    someInformation
    {
        nameOfInformation
    }
}

возвращает:

{
    "data": {
        "someInformation": 
        [
          {
            "nameOfInformation": "hi"
          }
        ]
      },
      "errors": [],
      "dataPresent": true,
      "extensions": null
}

Таким образом, запрос, кажется,работает просто отлично.

Реагирует

Я настроил свой клиент GraphQL (localhost: 3000) следующим образом:

const httpLink = createHttpLink({
    uri: "http://localhost:8080/someApplication/graphql",
});

const client = new ApolloClient({
    link: httpLink,
    cache: new InMemoryCache()
});

....
<ApolloProvider client={client}>
<Query query={gql`
    {
        someInformation{
            nameOfInformation
        }
    }
`}
>
    {({loading, error, data}) => {
        if (loading) return <p>Loading...</p>;

        if (error) return <p>{error.networkError.message}</p>;

        return data.someInformation.map(({nameOfInformation})=> (
            <p>{`${nameOfInformation}`}</p>
        ));
    }}
</Query>
</ApolloProvider>

Результат

Я всегда получаю следующую ошибку: JSON.parse: неожиданный символ в строке 1 столбца 1 данных JSON.

Когда я изменяю код так, чтобы конечная точка была конечной точкой в ​​ApolloНа панели запуска запрос возвращает правильный результат, и не выдается никакой ошибки.

Можно ли каким-либо образом увидеть, какие данные возвращаются и вызывают ошибку?Или я что-то не так получаю при получении данных?Я ценю любую помощь с этим!Спасибо за внимание!

1 Ответ

0 голосов
/ 12 декабря 2018

Проблема была на сервере: если вы настроили свою конечную точку GraphQL через HTTP, ваш класс должен иметь следующие аннотации:

@Path("/your-path-here")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class yourClass {... }

В моем случае входящие запросы не были распознаны как JSON, чтобыла причина ошибки.

...