GitHub GraphQL API 的局限

使用GitHub GraphQL API時,若star數量超過10k,生成圖表會顯得緩慢。這是因為GitHub API是分頁調用的,每次最多可提取100條數據。盡管如此,每日5k次的調用限制對于個人使用來說已經足夠。

小工具的開發

為了更好地管理和展示GitHub倉庫的star數據,我開發了一個小工具。這個工具不僅能生成圖表,還能提供數據下載功能,以便于進一步分析和研究。

初衷

記錄開發過程

在開發這個工具的過程中,我遇到了許多問題,尤其是在使用GitHub GraphQL API時。網上相關的經驗分享不多,因此我決定記錄下這些經驗,以供其他開發者參考。

提供開發參考

通過分享我的開發經驗,我希望能夠幫助更多的開發者了解如何使用GitHub GraphQL API。盡管文檔有限,但通過實戰經驗分享,可以加快其他開發者的學習進度。

豐富社區資源

目前關于GitHub GraphQL API的中文資源較少,因此通過我的分享可以豐富相關領域的資源,為更多開發者提供便利。

前提與注意

使用React開發

工具是用React構建的,并大量使用了react hooks。因此,開發者需要具備一定的React知識,才能深入理解代碼結構。

GraphQL基礎知識

在使用GraphQL之前,建議通讀GraphQL官網文檔以獲得基本的認知,這樣可以更好地理解如何使用GraphQL進行數據查詢和操作。

使用Apollo

本文使用Apollo來實踐GraphQL操作,Apollo提供了豐富的hooks和工具,能幫助開發者更高效地進行GraphQL開發。

遇到的坑

GitHub Token 安全問題

首次使用GitHub API時,需要生成一個token進行認證。起初,我將token硬編碼在代碼中,導致部署后token失效。這是因為GitHub能夠自動檢測代碼中的token并使其失效。正確的做法是將token存儲在.env.development.local文件中,以確保安全。

分頁獲取Star數據

通過GitHub API V4(GraphQL版本),無法一次性獲取所有star數據,只能通過分頁獲取。為此,我使用useLazyQuery進行遞歸調用,逐頁獲取所有star數據。

const [loadStars, { called, data: pageData, variables }] = useLazyQuery(GetStars);
useEffect(() => {
    const { stargazers } = pageData.repository;
    const { hasNextPage, endCursor } = stargazers.pageInfo;
    if (hasNextPage) {
        loadStars({
            variables: {
                ...variables,
                after: endCursor
            }
        });
    }
}, [pageData, loadStars, called, variables]);

GraphQL的遞歸調用

GraphQL的分頁處理需要通過遞歸調用實現,使用Apollo的useLazyQuery可以靈活地進行分頁請求,直到獲取所有數據。

工具分享

React-Apollo

React Apollo是GraphQL的最佳實踐之一,新版本提供了各種hooks,使用起來非常方便。它也有對應的server實現,適合全棧項目開發。

Recharts

Recharts是一個基于React的SVG圖表庫,可以靈活組合多種圖表類型。它充分體現了React的組件化開發理念,組件組合使用非常方便。

Styled-components

Styled-components是CSS-IN-JS概念的最佳實踐,現在寫樣式,我基本依賴這種方式。這種方法能讓樣式和邏輯緊密結合,提升開發效率。

經驗總結

項目開發的樂趣

在過去一個月,我開發了多個小項目,從密碼生成器到GitHub工具。這些項目極大地提升了我的開發能力和思考能力。

善用工具滿足需求

大部分開發需求都可以通過現有工具解決,只需找到合適的工具即可。對于那些沒有現成工具的需求,通過開發自定義工具也能滿足。

持續總結與優化

養成總結的習慣很重要,不僅是寫文章,平時也要優化和打磨自己的代碼庫,提升項目質量。

參考連接

FAQ

問:如何解決GitHub無法查看每日新增star數量的問題?

問:使用GitHub GraphQL API時,有哪些局限性需要注意?

問:在使用GitHub GraphQL API開發過程中遇到了哪些常見問題?

問:開發GitHub Star統計工具需要哪些技術基礎?

問:有哪些實用的工具可以輔助開發GitHub GraphQL API相關項目?

上一篇:

GitHub Copilot API接入指南

下一篇:

GitHub用戶數據API指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費