Menggunakan GraphQL untuk pembangunan API dalam Beego
GraphQL ialah bahasa pertanyaan API moden yang dibangunkan oleh Facebook yang menyediakan cara yang lebih cekap dan fleksibel untuk membina API. Berbeza daripada API RESTful tradisional, GraphQL membenarkan pelanggan mentakrifkan data yang diperlukan, dan pelayan hanya mengembalikan data yang diminta oleh pelanggan, sekali gus mengurangkan penghantaran data yang tidak diperlukan.
Beego ialah rangka kerja web sumber terbuka yang ditulis dalam bahasa Go. Ia menyediakan satu siri alatan dan perpustakaan untuk membangunkan aplikasi web berprestasi tinggi dengan pantas. ORM terbina dalam dan enjin templat Beego menjadikannya sangat mudah dan cekap semasa membangunkan aplikasi web.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan GraphQL untuk pembangunan API dalam Beego.
Pasang menggunakan arahan berikut:
pergi dapatkan github.com/graphql-go/graphql
pergi dapatkan github.com/graphql-go/handler
Berikut ialah takrifan jenis Pengguna ringkas:
var userType = graphql.NewObject( graphql.ObjectConfig{ Name: "User", Fields: graphql.Fields{ "id": &graphql.Field{ Type: graphql.NewNonNull(graphql.Int), }, "name": &graphql.Field{ Type: graphql.String, }, "email": &graphql.Field{ Type: graphql.String, }, }, }, )
Kod di atas mentakrifkan jenis Pengguna dan mengandungi tiga atribut: id, nama dan e-mel. Antaranya, atribut id ialah jenis integer bukan kosong, dan nama serta atribut e-mel ialah jenis rentetan.
Kami juga boleh mentakrifkan kaedah pertanyaan yang mengandungi berbilang Pengguna:
var rootQuery = graphql.NewObject( graphql.ObjectConfig{ Name: "Query", Fields: graphql.Fields{ "users": &graphql.Field{ Type: graphql.NewList(userType), Resolve: func(p graphql.ResolveParams) (interface{}, error) { return getUsers() }, }, }, }, ) func getUsers() ([]User, error) { // 获取用户数据 }
Kod di atas mentakrifkan kaedah pertanyaan bernama pengguna, yang akan mengembalikan senarai yang mengandungi berbilang Pengguna. Dalam kaedah Resolve, kami akan memanggil kaedah getUsers untuk mendapatkan data pengguna dan mengembalikannya kepada klien. Memandangkan GraphQL-go menyediakan fungsi menghuraikan parameter Graphql secara automatik, kami tidak perlu mendapatkan parameter permintaan secara manual.
Kami boleh menggunakan pengendali HTTP tersuai yang disediakan oleh GraphQL-go untuk pemprosesan. Berikut ialah contoh mudah:
h := handler.New(&handler.Config{ Schema: &graphql.Schema{Query: rootQuery}, Pretty: true, GraphiQL: true, })
Kod di atas mencipta pengendali GraphQL h yang menggunakan Skema yang kami takrifkan (rootQuery), dengan GraphiQL (IDE Web untuk GraphQL) dan ciri pemformatan kod didayakan.
Berikut ialah contoh kod:
beego.Handler("/graphql", h)
Kod di atas mengikat pengendali GraphQL h ke laluan "/graphql". Sekarang, lawati "/graphql" dalam penyemak imbas anda untuk membuka GraphiQL dan mula menguji API.
Ringkasan
Dalam artikel ini, kami memperkenalkan cara menggunakan GraphQL untuk pembangunan API dalam Beego. Mula-mula, kami memasang GraphQL-go dan mencipta Skema GraphQL, kemudian menggunakan pengendali HTTP tersuai yang disediakan oleh GraphQL-go untuk mengendalikan permintaan, dan akhirnya mendaftarkan pengendali GraphQL ke dalam laluan Beego.
Fleksibiliti dan kecekapan GraphQL menjadikannya salah satu kaedah pembangunan API yang paling popular hari ini. Menggabungkan ciri prestasi tinggi dan mudah digunakan Beego, kami boleh membina aplikasi web dengan cepat dengan prestasi cemerlang.
Atas ialah kandungan terperinci Menggunakan GraphQL untuk pembangunan API dalam Beego. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!