Menambahkan dukungan GraphQL ke aplikasi Flask Anda.
Cukup gunakan tampilan GraphQLView dari flask_graphql
from flask import Flask
from flask_graphql import GraphQLView
from schema import schema
app = Flask ( __name__ )
app . add_url_rule ( '/graphql' , view_func = GraphQLView . as_view (
'graphql' ,
schema = schema ,
graphiql = True ,
))
# Optional, for adding batch query support (used in Apollo-Client)
app . add_url_rule ( '/graphql/batch' , view_func = GraphQLView . as_view (
'graphql' ,
schema = schema ,
batch = True
))
if __name__ == '__main__' :
app . run () Ini akan menambah /graphql titik akhir ke aplikasi Anda dan mengaktifkan IDE GraphiQL.
Jika Anda menggunakan jenis Schema dari pustaka graphene, pastikan untuk menggunakan atribut graphql_schema untuk meneruskan sebagai skema pada tampilan GraphQLView . Kalau tidak, GraphQLSchema dari graphql-core adalah cara yang harus ditempuh.
Info lebih lanjut di Catatan Rilis Graphene V3 dan Penggunaan GraphQL-Core 3.
schema : Objek GraphQLSchema yang Anda inginkan untuk dijalankan ketika mendapat permintaan yang valid.context : Nilai yang harus dilewati sebagai Fungsi context_value ke execute . Secara default diatur untuk dict dengan objek permintaan pada request kunci.root_value : root_value yang ingin Anda berikan untuk execute graphql.pretty : Apakah Anda ingin respons menjadi JSON yang dicetak.graphiql : Jika True , dapat menyajikan graphiQL saat dimuat langsung dari browser (alat yang berguna untuk debugging dan eksplorasi).graphiql_version : Versi graphiql untuk dimuat. Default ke "1.0.3" .graphiql_template : menyuntikkan string template jinja untuk menyesuaikan graphiql.graphiql_html_title : judul graphiql untuk ditampilkan. Default ke "graphiql" .batch : Atur tampilan GraphQL sebagai Batch (untuk menggunakan Apollo-Client atau ReactrelayNetworkLayer)middleware : Daftar Middlewares GraphQL.encode : Encoder yang akan digunakan untuk tanggapan (secara masuk akal default ke graphql_server.json_encode ).format_error : Formatter kesalahan yang akan digunakan untuk respons (secara masuk akal default ke graphql_server.default_format_error .subscriptions : Titik akhir Socket GraphiQL untuk menggunakan langganan di GraphQL-WS.headers : String graphQL opsional untuk digunakan sebagai header permintaan awal yang ditampilkan, jika tidak disediakan, header yang disimpan akan digunakan.default_query : String graphQL opsional untuk digunakan ketika tidak ada kueri yang disediakan dan tidak ada kueri yang disimpan dari sesi sebelumnya. Jika tidak disediakan, GraphiQL akan menggunakan kueri defaultnya sendiri.header_editor_enabled : Boolean opsional yang memungkinkan editor header bila benar. Default ke false .should_persist_headers : Boolean opsional yang memungkinkan untuk mempertahankan header untuk disimpan saat benar. Default ke false . Anda juga dapat subkelas GraphQLView dan menimpa get_root_value(self, request) untuk memiliki nilai root dinamis per permintaan.
class UserRootValue ( GraphQLView ):
def get_root_value ( self , request ):
return request . user Karena V3, kode flask-graphql hidup di repositori GraphQL-Server untuk menjaga perubahan besar pada paket dasar tentang sinkronisasi dengan semua integrasi lainnya. Untuk berkontribusi, silakan lihat Contributing.md.