2017-02-26 25 views
0

在節點上我使用的是express-graphql插件,它提供了GraphiQL UI。graphiql作爲郵件正文發送,而不是查詢字符串

此實現中的GraphiQL始終將查詢作爲GET查詢字符串發送。

但是,據我瞭解GraphQL和express-graphql文檔,應該也可以在POST請求的主體中發送查詢。

有什麼辦法讓GraphiQL(即瀏覽器IDE)在POST主體中發送查詢嗎?

附錄2017年2月26日:

我想我找到我需要我自己知道。

無論出於何種原因,我在查詢字符串中查詢。就像這樣:

[myhostname]?query={users{[myfields]}}

我忽視了。

由於快遞-graphql文件指出:

如果查詢字符串沒有找到,它會尋找在POST請求 體。

這意味着反過來:如果在查詢字符串中找到,它會不是在請求正文中查找。

因此它被視爲GET請求。

所以我需要做的就是從查詢參數中清除我的URL,並且請求以POST主體到達。

這基本上是我所需要知道的。

所以,我真的是一個馬虎的錯誤,我沒有正確地觀看網址,即不知道查詢字符串中有查詢。

回答

0

GraphiQL是一個React組件,完全可根據您的數據發送到服務器的方式進行自定義(fetcher)。該express-graphql中間件基本上拉從CDN的transpiled GraphiQL碼併發送一個靜態的HTML頁面也包括到客戶端:https://github.com/graphql/express-graphql/blob/master/src/renderGraphiQL.js

有了這些知識,你基本上可以做同樣在一個單獨的路線,並關閉內置GraphiQL來自express-graphql

另請檢查GraphiQL文檔:https://github.com/graphql/graphiql

+0

我不知道我理解你的答案。但基於我希望理解的內容,讓我重新描述一下我的問題: 如何自定義GraphiQL,使其將數據作爲POST主體發送,而不是GET查詢字符串? – LongHike

+0

檢查答案中的鏈接。它向您展示了'express-graphql'的完整源代碼。事實上,如果您查看GraphiQL回購的第一個示例,它會向您顯示如何將其作爲發佈請求執行:https:// github。com/graphql/graphiql –

+0

@ p0k8_ GraphiQL正是這樣設計的。事實上,提取數據的'fetcher'甚至不需要通過HTTP工作,你可以使用完全不同的協議。 –

相關問題