Gin-Gonic Middleware yang melaksanakan corak pemilihan medan
Di syarikat saya, kami menggunakan Go untuk membina alatan dalaman. Baru-baru ini saya bekerja dalam API REST menggunakan gin-gonic, yang memerlukan memaparkan banyak data merentas banyak titik akhir.
Seseorang mesti mempunyai ciri dalam senario jenis ini, ialah penomboran, tetapi corak yang sering diabaikan ialah tindak balas separa (a.k.a pemilihan medan). Ia juga merupakan tambahan yang sangat bagus untuk menapis jumlah data dalam respons pelayan web anda.
Mari kita jelaskan dahulu apa yang saya maksudkan dengan pemilihan medan. Bayangkan anda mempunyai titik akhir berikut:
// > GET /api/products [ { "id": 1, "createdAt": "2024-18-11", "updatedAt": "2024-18-11", "code": "1", "price": { "amount": 100, "currency": "EUR" }, "manufacturedBy": "myshop", "stock": 552, ... }, ... ]
Menggunakan respons separa, pelanggan boleh menapis output dengan parameter pertanyaan medan, mis.
// > GET /api/products?fields=code,price [ { "code": "1", "price": { "amount": 100, "currency": "EUR" } }, ... ]
Hanya medan yang diisytiharkan dalam parameter pertanyaan dikembalikan. Mengurangkan saiz muatan dan menjimatkan lebar jalur.
Saya tidak menemui sebarang pelaksanaan yang tersedia untuk corak ini, jadi saya memutuskan untuk menciptanya sendiri, dan itulah cara Milogo dilahirkan.
Milogo ialah perisian tengah Gin yang memproses respons API, menapis keluar medan yang dinyatakan dalam parameter pertanyaan medan dan hanya mengembalikan data yang diminta.
Beberapa ciri utama yang tersedia:
Sokongan untuk objek json dan tatasusunan json.
Jadi Milogo boleh menapis medan untuk respons JSON yang bermula dengan tatasusunan item atau hanya dengan satu item.
Sokongan untuk menapis medan dalam objek json bersarang.
Milogo juga menyokong penapisan objek JSON bersarang dengan format berikut cth. kod, harga(jumlah)
Sokongan untuk json yang dibalut dengan json lain.
Kadangkala respons JSON dibalut dengan objek JSON lain, sokongan Milogo menapis muatan sebenar (lihat contoh dibalut):
// GET /products?fields=code,price(amount) { "data": [ { "code": 1, "price": { "amount": 100 } }, ... ], "_metadata": { ... } }
Seperti mana-mana middleware gin, Milogo sangat mudah digunakan dan disediakan, anda boleh mengikuti README dalam repositori github, tetapi pada asasnya:
r := gin.Default() r.Use(Milogo())
cukup untuk menambah perisian tengah Milogo pada api anda.
Dalam contoh sebelumnya, Milogo digunakan pada setiap titik akhir, tetapi ia juga boleh digunakan hanya pada sekumpulan titik akhir, atau hanya pada titik akhir tertentu, mis.
group := r.Group("/products", milogo.Milogo()) group.GET("", productsHandler)
Dalam contoh sebelumnya, hanya kumpulan /produk yang akan menggunakan perisian tengah Milogo.
Milogo direka untuk memudahkan pembangunan REST API dan meningkatkan interaksi pelanggan-pelayan. Lihat repositori GitHub untuk contoh dan dokumentasi.
Jangan segan-segan untuk menghubungi atau menyumbang — mari kita sama-sama cekapkan API REST!
Atas ialah kandungan terperinci Permudahkan Respons API REST Anda dengan Milogo untuk Gin-Gonic. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!