Pembangunan Golang: Melaksanakan antara muka API berasaskan GraphQL
Pengenalan:
Dalam pembangunan perisian hari ini, cekap dan membina fleksibel Antara muka API adalah sangat penting. Sebagai bahasa pertanyaan dan masa jalan yang baru muncul, GraphQL menyediakan cara yang lebih fleksibel, intuitif dan cekap untuk mentakrif dan membuat pertanyaan antara muka API. Artikel ini akan memperkenalkan cara menggunakan Golang untuk membangunkan antara muka API berasaskan GraphQL dan menyediakan contoh kod yang sepadan.
1. Apakah itu GraphQL?
GraphQL ialah bahasa pertanyaan dan masa jalan yang dibangunkan oleh Facebook. Ia berbeza daripada API RESTful tradisional, GraphQL membolehkan pelanggan mentakrifkan struktur dan medan data yang diperlukan dengan tepat, dan hanya mengembalikan data yang diperlukan pelanggan, mengelakkan masalah pengambilan semula yang berlebihan atau pertanyaan yang tidak cekap dalam antara muka API tradisional. GraphQL juga menyokong berbilang pertanyaan dan gabungan berbilang sumber data, yang memberikan pembangun bahagian hadapan lebih fleksibiliti apabila menanya data tanpa memerlukan berbilang permintaan ke bahagian belakang.
2. Golang dan GraphQL
Golang ialah bahasa untuk membangunkan aplikasi back-end yang cekap, berskala dan berkuasa. Dengan menggunakan Golang untuk membangunkan antara muka API berasaskan GraphQL, kami boleh memberikan permainan penuh kepada prestasi dan kebolehskalaan serentak Golang, serta mencapai pertanyaan dan pemprosesan data yang cekap.
3 Bina persekitaran pembangunan
Sebelum memulakan pembangunan, kita perlu memasang beberapa perpustakaan yang diperlukan untuk menyokong pembangunan GraphQL.
Dalam artikel ini, kami memilih untuk menggunakan perpustakaan github.com/graphql-go/graphql untuk melaksanakan antara muka API berasaskan GraphQL.
Pertama, buka terminal dan gunakan arahan berikut untuk memasang perpustakaan:
go get github.com/graphql-go/graphql
4. Laksanakan GraphQL Antara muka API
Di bawah kami akan menggunakan contoh mudah untuk menunjukkan cara menggunakan Golang untuk melaksanakan antara muka API berdasarkan GraphQL.
Kami menganggap bahawa kami sedang membina tapak blog dan perlu melaksanakan antara muka API untuk menanyakan tajuk, pengarang dan teks blog.
type Blog struct { ID graphql.ID Title string Author string Body string } var ( blogs []*Blog root *graphql.Object schema *graphql.Schema ) func init() { root = graphql.NewObject(graphql.ObjectConfig{ Name: "Query", Fields: graphql.Fields{ "blog": &graphql.Field{ Type: graphql.NewList(blogType), Resolve: func(p graphql.ResolveParams) (interface{}, error) { return blogs, nil }, }, }, }) schema, _ = graphql.NewSchema(graphql.SchemaConfig{ Query: root, }) }
Kami mencipta Pengendali HTTP untuk mengendalikan permintaan GraphQL dan menggunakan fungsi Execute
dalam perpustakaan graphql-go untuk melaksanakan pertanyaan GraphQL.
func GraphqlHandler(w http.ResponseWriter, r *http.Request) { result := graphql.Do(graphql.Params{ Schema: *schema, RequestString: r.URL.Query().Get("query"), }) if len(result.Errors) > 0 { log.Printf("execution failed: %v", result.Errors) http.Error(w, result.Errors[0].Message, http.StatusInternalServerError) return } json.NewEncoder(w).Encode(result) }
func main() { http.HandleFunc("/graphql", GraphqlHandler) log.Fatal(http.ListenAndServe(":8080", nil)) }
5. Uji antara muka API GraphQL
Selepas memulakan pelayan HTTP, kami boleh menggunakan alatan (seperti Postman) untuk menguji antara muka API GraphQL.
Hantar permintaan POST ke http://localhost:8080/graphql, tetapkan tajuk permintaan Content-Type kepada application/json, dan badan permintaan ialah contoh pertanyaan berikut:
{ "query": "{ blog { title author body } }" }
Server Hasil pertanyaan yang sepadan akan dikembalikan, hanya mengembalikan medan yang diperlukan dalam permintaan.
6. Ringkasan
Artikel ini memperkenalkan cara menggunakan Golang untuk membangunkan antara muka API berdasarkan GraphQL dan menyediakan contoh kod yang sepadan. Dengan menggunakan Golang dan GraphQL, kami boleh membina antara muka API yang cekap dengan cepat dan fleksibel serta memenuhi keperluan pelanggan dengan lebih baik. Saya harap artikel ini dapat membantu anda memahami dan menggunakan pembangunan GraphQL!
Atas ialah kandungan terperinci Pembangunan Golang: Melaksanakan antara muka API berasaskan GraphQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!