Я застрял на этой ошибке на некоторое время, поэтому любая помощь будет высоко ценится! :)
Я создаю веб-приложение с:
- Внутренним сервером, работающим с Spring Boot
- Интерфейсным сервером, работающим с React / TypeScript / GraphQL
До сих пор мне удавалось заставить Бэкенд работать и тестировать его с помощью Insomnia (эквивалент Почтальона ...). Я также смог протестировать интерфейс с простыми запросами без переменных - пока все хорошо ...
Сейчас я пытаюсь передать значение переменных в мутацию (сторона внешнего интерфейса), но получаю следующую ошибку: Хотя мутация работает нормально, если я жестко закодирую значения и удаляю переменные $.
Переменная 'input' привела значение NULL для типа NonNull 'PostInput!'
Если я запустил мутацию с расширением Apollo Chrome, я получаю следующую ошибку (другую) :
{"errors": [{"message": "Неожиданный токен V в JSON в позиции 0", "location": ["ServerParseError: Неожиданный токен V в JSON в позиция 0 \ n в JSON .parse () \ n в http://localhost: 3000 / static / js / 0.chunk. js: 45120: 21"]}]}
Надеюсь, какой-то код поможет:
Мутация
import gql from "graphql-tag";
export const MUTATE_POST = gql`
mutation MutatePost($input: PostInput!) {
mutatePost(post: $input) {
id
title
description
}
}
`;
Клиент Apollo
import ApolloClient from "apollo-boost";
const URI_DEV = "http://localhost:9090/posts";
export const client = new ApolloClient({
uri: URI_DEV
});
Root Приложение index.tsx
import { ApolloProvider } from "@apollo/react-hooks";
function App() {
return (
<ApolloProvider client={client}>
<Home />
</ApolloProvider>
);
}
render(<App />, document.getElementById("root"));
In React Component
import { useMutation } from "@apollo/react-hooks";
const [mutatePost] = useMutation(MUTATE_POST);
const onClickSubmit = () => {
mutatePost({ variables: { input: { title: "...", description: "..."} } })
.then(() => {
onClose();
})
.catch(error => {
console.error(error);
});
};
Схема GraphQL (внутренняя сторона)
schema {
query: Query
mutation: Mutation
}
input PostInput {
id: String
title: String!
description: String!
}
type Post {
id: ID!
title: String!
description: String!
}
type Query {
getAllPosts: [Post]!
}
type Mutation {
mutatePost(post: PostInput!) : Post
deletePostsByIds(ids: [ID]!) : [Post]
}
Я что-то упускаю / любая опечатка где угодно? Я все еще новичок в этом, к сожалению ...
Заранее благодарю за помощь !!!!!!