Ariadne 是一個用於實作 GraphQL 伺服器的 Python 函式庫。
模式優先: Ariadne 使 Python 開發人員能夠使用模式優先方法來實作 API。這是 GraphQL 社群使用的領先方法,並得到數十種前端和後端開發人員工具、範例和學習資源的支持。 Ariadne 讓您和您團隊的其他成員可以立即使用所有這些內容。
簡單: Ariadne 提供小型、一致且易於記憶的 API,讓開發人員專注於業務問題,而不是樣板檔案。
開放: Ariadne 被設計為模組化且開放客製化。如果您缺少某些內容或對某些內容不滿意,請擴展或輕鬆替換您自己的內容。
文件可在此處取得。
簡單、快速學習且易於記憶的 API。
與 GraphQL.js 版本 15.5.1 的兼容性。
查詢、突變和輸入類型。
非同步解析器和查詢執行。
訂閱。
自訂標量、枚舉和模式指令。
聯合和接口。
文件上傳。
使用 SDL 字串定義架構。
從.graphql
、 .gql
和.graphqls
檔案載入架構。
用於在現有站點中實作 GraphQL 的 WSGI 中間件。
用於 API 監控的 Apollo Tracing 和 OpenTracing 擴充。
選擇加入camelCase
和snake_case
之間的自動解析器映射,以及用於將camelCase
kwargs轉換為snake_case
@convert_kwargs_to_snake_case
函數裝飾器。
內建簡單的同步開發伺服器,用於快速 GraphQL 實驗和 GraphQL Playground。
支援 Visual Studio Code 的 Apollo GraphQL 擴充。
透過gql()
輔助函數進行 GraphQL 語法驗證。如果安裝了 Apollo GraphQL 擴展,也提供著色。
沒有全域狀態或物件註冊表,支援同一程式碼庫中的多個 GraphQL API 並具有明確類型重複使用。
支持Apollo Federation
。
Ariadne 可以使用 pip 安裝:
pip 安裝 ariadne
Ariadne 需要 Python 3.7 或更高版本。
以下範例建立一個定義Person
類型和單一查詢欄位people
API,傳回兩個人的清單。它還啟動一個本機開發伺服器,並在http://127.0.0.1:8000
位址上提供 GraphQL Playground。
首先安裝 uvicorn,我們將使用它來提供 API 的 ASGI 伺服器:
pip 安裝 uvicorn
然後為您的範例應用程式建立一個example.py
檔案:
from ariadne import ObjectType, QueryType, gql, make_executable_schemafrom ariadne.asgi import GraphQL# 使用模式定義語言定義類型(https://graphql.org/learn/schema/)# 在gql 函式中包裝字串可提供驗證和更好的錯誤tracebacktype_defs = gql (""" type Query { people: [Person!]! } type Person { firstName: String lastName: String Age: Int fullName: String }""")# 使用QueryTypequery = QueryType() 將解析器函數對應到查詢欄位# 解析器是簡單的 python 函數@query.field("people")defsolve_people(*_):return [ {“firstName”:“約翰”,“lastName”:“Doe”,“年齡”:21}, {"firstName": "鮑伯", "lastName": "鮑伯森", "年齡": 24}, ]# 使用ObjectTypeperson = ObjectType("Person")@person.field("fullName") 將解析器函數對應到自訂類型欄位def resolve_person_fullname(person, *_):return "%s %s" % (person[ "firstName" ], person["lastName"])# 建立可執行的GraphQL schemaschema = make_executable_schema(type_defs, query, person)# 使用schema 建立ASGI 應用程序,在偵錯模式下執行app = GraphQL(schema, debug= True)
最後運行伺服器:
uvicorn 範例:應用程式
有關更多指南和範例,請參閱文件。
我們歡迎為 Ariadne 做出貢獻!如果您發現錯誤或問題,請隨時使用 GitHub issues。如果您有任何問題或回饋,請隨時關注我們的 GitHub 討論。
有關指導和說明,請參閱 CONTRIBUTING.md。
網站和文件有自己的 GitHub 儲存庫:mirumee/ariadne-website
另請確保您在 Twitter 上關注@AriadneGraphQL,以獲取最新更新、新聞和隨機思考!
由 Mirumee Software 使用 ❤️ 製作[email protected]