将 GraphQl 查询 POST 请求更改为 GET

问题描述 投票:0回答:2

我正在使用 https://www.npmjs.com/package/apollo-client graphQl 的库,但我面临一个问题,当我使用查询时,它应该是 GET 请求,但它在网络选项卡中显示它是 POST 请求。

是否需要在下面的代码中传递一些额外的参数才能使其成为 GET 请求。

  const dataPage = await apolloClient.query({
    query: getCategoryDetail(
      id,
      queryParams,
      enabledFilters,
      region !== undefined ? region : regionID
    ),
    variables: params
  });

以下是产品搜索的查询,运行完全正常

 let graphql = `
        query category(
            ${params}
        ) { 
            ${defaultCategory != null ? categorySearch : ''}
            products(
                pageSize: $pageSize
                currentPage: $currentPage
                ${textSearch}
                filter: {
                    ${filter}
                }
                sort: {
                    ${sort}
                }
                region:
                  "${region}"
                
            ) {
                ${searchFilters}

                items {
                  ${productFields}
                }

                page_info {
                    total_pages
                    current_page
                }
                total_count
            }
        }
    `;
graphql react-apollo apollo-client
2个回答
0
投票

GrpahQL 操作始终是 POST 请求,不应该是 GET。您想要发出 GET 请求的任何具体原因。


0
投票

默认情况下,Apollo 客户端会发出 POST 请求。

如果您需要使用

GET
请求,那么您可以使用
useGETForQueries
注意: 这将使所有 graphQL 调用变为 GET 请求。这是一个代码示例,

const client = new ApolloClient({
  link: from([
    new HttpLink({
      uri: "/graphql",
      useGETForQueries: true, // <--- to enable GET requests
    }),
  ]),
});

如果您需要特定查询来使用

GET
,请使用像这样的
useQuery
钩子,

// useQuery
const { data } = useQuery(query, {
  context: { fetchOptions: { method: "GET" } },
});

// useLazyQuery
const [getEmpData, { loading, data }] = useLazyQuery(query, {
  context: { fetchOptions: { method: "GET" } },
});

© www.soinside.com 2019 - 2024. All rights reserved.