Клиент Apollo использует хук реагирования на запросы GET

#reactjs #apollo-client #react-apollo #graphql-js #react-apollo-hooks

Вопрос:

Ресурс API, который я пытаюсь извлечь, ожидает запроса GET. Как я могу использовать крючок useQuery для отправки запроса GET, похоже, что он отправляет только запросы POST.

В моем ограниченном понимании GraphQL, должен ли сервер быть изменен, чтобы конечная точка для GET_ALL_MODELS была запросом POST, или мне нужно что-то изменить на интерфейсе, чтобы мой запрос отправлял запрос метода GET.

Ответ №1:

Есть 2 способа реализовать это.

Один из них настраивает вас ApolloClient на отправку всех запросов как GET . Это достигается HttpLink с useGETForQueries помощью as true

 import { ApolloClient, InMemoryCache, HttpLink, ApolloLink } from '@apollo/client';

const client = new ApolloClient({
  cache: new InMemoryCache(),
  link: new HttpLink({
    uri: '/graphql',
    useGETForQueries: true
  }),
});
 

И в случае, если вам нужно сделать это для определенного запроса, вы можете переопределить ApolloLink контекст и установить fetchOptions.method значение GET .

 const query = useQuery(gql`...`, {variables: {...}, context: {fetchOptions: {method: 'GET'}}})
 

Комментарии:

1. действительно полезно спасибо вам за это, я так много раз просматривал документы и все время ловил себя на том, что блуждаю по документации useQuery hook,