【Graphql實踐】使用 Apollo(iOS) 訪問 Github 的 Graphql API

來源:互聯網
上載者:User

標籤:url   target   electron   客戶   用戶端   實踐   date   frame   get   

最近在協助調研 Apollo 產生的程式碼是否有可能跨 Query 共用模型的問題,雖然初步結論是不能,並不是預期的結果,但是在調研過程中積累的一些經驗,有必要記錄下。如果你也對 Graphql 感興趣,不妨先從 Github 的 Graphql API 來切手實踐。

關於 Graphql 官網

儘管只是做用戶端的一些實踐,我還是建議你先過一遍 Graphql 官網的學習指南。這樣能更快速地理解概念。一些用戶端庫的文檔,大部分都只是介紹基本用法。

中文版,可以直接看 http://graphql.cn/

製作訪問 Github API 的 Token

Github 中有多個 Token 的概念,你需要的是在 https://github.com/settings/tokens 這個頁面。初步接觸 Github API 的童鞋,可能會走好多彎路,比如把 Github APP 的token建置規則當成了 API 的訪問 Token,幾經周折產生出來,卻發現完全不好使。

curl -H "Authorization: bearer 7b7cc672235587292be65d11d8ae729b14a0d162" https://api.github.com/graphql

其中的 7b7cc672235587292be65d11d8ae729b14a0d162 是我自己產生的幾乎沒有私人許可權的 Token,可以臨時提供給大家快速上手。但是不保證其一直可用,所以還是建議大家自己去建立一個自己的專屬 Toekn。

配置 graphiql -- graphql 調試工具

這個地方,也是各種坑。第一反應就是去看官方文檔,但是文檔過時太多,坑太深。如果你非要看的話,我友情提醒一句,需要在父目錄執行的是

yarn && npm run build

或者你乾脆自己建立一個自己的樣本:

yarn add graphiqlyarn add graphql

如果看不懂我上面在說什麼,說明你很可能不是一個 Web 前端,那就直接用一個基於 graphiql 開發的 APP 吧:

https://github.com/skevy/graphiql-app。Github 甚至還有專門的使用該 App 訪問 Github API 的教程:https://developer.github.com/v4/guides/using-the-explorer/

注意: 這個 App 是基於 Electron 開發的,作者沒有直接提及對 Windows 的支援,但是如果你確實有需要,自己看下 Electron 的編譯教程,肯定是可以搞定的。

以可視化方式查看 Github API

想象下,Graphql 把資料當做一個具體的圖來處理,那這個圖真的畫出來是什麼樣呢?本來想自己用 Web 畫下效果的,但是竟然發現網上已經有了相關的工具。

完整的工具庫,見https://github.com/APIs-guru/graphql-voyager。如果能和上文的 graphiql 的 App 彙總在一起,就非常完美了。

如果直接向看下效果,可以直接存取線上Demo: https://apis.guru/graphql-voyager/。裡面提供了幾個執行個體。Github 的 API 看起來,似乎也不是很複雜嘛~~

關於 Apollo iOS 庫

文檔肯定是要要先看下的:https://www.apollographql.com/docs/ios/。但是其中的坑,還是有幾個,記錄下,或許能協助後來的童鞋:

  • iOS 相容性是 iOS 9.0。如果你的項目指定最低版本為 8.0,會發現 pod 安裝的總是舊版 Apollo 庫。

  • 如果找不到最新的庫,可能需要更新下 pod:

pod install --repo-update
  • 寫到 Xcode 裡那段指令碼,是不正確的。官網文檔沒有及時更新,應該下面這樣寫:
APOLLO_FRAMEWORK_PATH="$(eval find $FRAMEWORK_SEARCH_PATHS -name "Apollo.framework" -maxdepth 1)"if [ -z "$APOLLO_FRAMEWORK_PATH" ]; thenecho "error: Couldn‘t find Apollo.framework in FRAMEWORK_SEARCH_PATHS; make sure to add the framework to your project."exit 1ficd "${SRCROOT}/${TARGET_NAME}"$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate "$(find . -name ‘*.graphql‘)" --schema=schema.json --output API.swift
  • 【未驗證】如果考慮 Apollo 自訂Header或者自訂 HTTPS 認證校正,可以看下 https://github.com/apollographql/apollo-ios/issues/37#issuecomment-389843281

【Graphql實踐】使用 Apollo(iOS) 訪問 Github 的 Graphql API

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.