Bagaimana untuk menyediakan GraphQL dalam aplikasi Rails?

Jul 09, 2025Tinggalkan pesanan

GraphQL telah muncul sebagai alternatif yang kuat kepada API yang tenang tradisional, menawarkan cara yang lebih cekap dan fleksibel untuk menanyakan data. Sebagai vendor Rails yang berpengalaman, saya mempunyai keistimewaan melaksanakan GraphQL dalam pelbagai aplikasi Rails, menyaksikan secara langsung kesan transformatif yang dapat dilakukan terhadap proses pembangunan dan pengalaman pengguna akhir. Dalam catatan blog ini, saya akan berkongsi panduan langkah demi langkah mengenai cara menubuhkan GraphQL dalam aplikasi Rails, bersama dengan beberapa amalan dan pertimbangan terbaik.

Prasyarat

Sebelum menyelam ke dalam proses persediaan, pastikan anda mempunyai yang berikut dipasang pada mesin anda:

  • Ruby (versi 2.5 atau lebih tinggi)
  • Rails (versi 5.2 atau lebih tinggi)
  • Bundler

Langkah 1: Buat aplikasi Rails baru

Jika anda bermula dari awal, buat aplikasi Rails baru menggunakan arahan berikut:

Rails graphql_rails_app cd graphql_rails_app baru

Langkah 2: Tambahkan permata graphql

Untuk menggunakan Graphql dalam aplikasi Rails anda, anda perlu menambahGraphqlpermata ke andaGemfile. BukaGemfileDalam editor teks kegemaran anda dan tambahkan baris berikut:

permata 'graphql'

Kemudian, jalankanpemasangan bundleuntuk memasang permata.

Langkah 3: Menjana skema GraphQL

Skema GraphQL mentakrifkan jenis dan operasi yang terdapat di API anda. Untuk menghasilkan skema asas, jalankan arahan berikut:

Rails menjana graphql: memasang

Perintah ini mewujudkan aGraphqldirektori di andaAppdirektori, bersama dengan aJadual.RBfail. TheJadual.RBFail adalah titik masuk untuk skema GraphQL anda.

Langkah 4: Tentukan Jenis

Dalam GraphQL, jenis mewakili data yang boleh dipersoalkan. Anda boleh menentukan jenis tersuai berdasarkan model aplikasi anda. Contohnya, mari kita anggap anda mempunyaiPenggunaModel dalam aplikasi Rails anda. Anda boleh menentukan yang sepadanUserTypeDalam skema GraphQL anda.

Bukaapp/graphql/types/user_type.rbfail dan tambahkan kod berikut:

Modul Jenis Kelas UserType <Types :: BaseObject Field: ID, ID, NULL: Field Field: Nama, String, NULL: Field Field: E -mel, String, Null: False End End

Kod ini mentakrifkan aUserTypedengan tiga bidang:id,nama, dane -mel.

Langkah 5: Tentukan pertanyaan

Pertanyaan digunakan untuk mengambil data dari pelayan. Anda boleh menentukan pertanyaan tersuai dalam skema GraphQL anda. Bukaapp/graphql/types/query_type.rbfail dan tambahkan kod berikut:

Modul Jenis Kelas PertanyaanType <Types :: BaseObject Field: Pengguna, [Jenis :: UserType], Null: Pengguna Def Palsu. Semua End End End

Kod ini mentakrifkan apenggunapertanyaan yang mengembalikan senarai semua pengguna dalam aplikasi.

Langkah 6: Kemas kini skema

BukaAPP/GRAPHQL/SCHEMA.RBfail dan pastikan ia merangkumiQueryType. Fail itu sepatutnya kelihatan seperti ini:

British Standard BSC28 Steel Rail60E1A1 Rail

Application ClassChema <Graphql :: Jenis Pertanyaan Skema :: End QueryType

Langkah 7: Sediakan titik akhir GraphQL

Untuk menjadikan API GraphQL anda boleh diakses, anda perlu menyediakan titik akhir dalam aplikasi Rails anda. Bukaconfig/routes.rbfail dan tambahkan kod berikut:

Rails.Application.Routes.Draw Do Post '/Graphql', To: 'Graphql#Execute' End

Kemudian, buat aGraphqlControllerUntuk mengendalikan permintaan GraphQL. Jalankan arahan berikut:

Rails menjana pengawal graphql melaksanakan

BukaAPP/CONTROLLERS/GRAPHQL_CONTROLLER.RBfail dan tambahkan kod berikut:

kelas graphqlcontroller <ApplicationController def Execute query = params [: query] variables = sure_hash (params [: variables]) result = applicationsChema.Execute (query, variables: variables) memastikan_hash (json.parse (ambiguous_param)) else {} end when hash, actionController :: parameter ambiguous_param when nil {} else rese argumentError, "parameter yang tidak dijangka: #{ambiguous_param}" akhir akhir

Langkah 8: Uji API Graphql anda

Anda boleh menggunakan alat sepertiGraphiqlUntuk menguji API GraphQL anda. GraphIQL adalah IDE dalam penyemak imbas untuk meneroka API GraphQL. Untuk menggunakan GraphIQL dalam aplikasi Rails anda, tambahkan kod berikut ke andaconfig/routes.rbFail:

Jika Rails.env.Development? Gunung Graphiql :: Rails :: Engine, di: "/Graphiql", Graphql_path: "/Graphql" Akhir

Sekarang, anda boleh mengakses graphiql dihttp: // localhost: 3000/graphiqldalam penyemak imbas anda. Anda boleh menulis pertanyaan dan melihat hasilnya dalam masa nyata.

Amalan dan pertimbangan terbaik

  • Kebenaran: Melaksanakan mekanisme kebenaran yang betul untuk memastikan bahawa hanya pengguna yang disahkan dapat mengakses pertanyaan dan mutasi tertentu.
  • Caching: Gunakan strategi caching untuk meningkatkan prestasi API GraphQL anda.
  • Pengendalian ralat: Melaksanakan pengendalian ralat yang mantap untuk memberikan mesej ralat yang bermakna kepada pelanggan.

Tawaran Rails kami

Sebagai vendor rel, kami menawarkan pelbagai produk rel berkualiti tinggi, termasuk60E1A1 RAIL,Keretapi keluli bsc28 standard British, danKereta api keluli 25lb asce. Rel ini direka untuk memenuhi piawaian industri tertinggi dan sesuai untuk pelbagai aplikasi.

Hubungi kami untuk perolehan

Jika anda berminat untuk membeli rel kami atau mempunyai sebarang soalan mengenai menubuhkan GraphQL dalam aplikasi Rails anda, kami ingin mendengar daripada anda. Hubungi kami untuk memulakan perbincangan perolehan dan cari penyelesaian terbaik untuk keperluan anda.

Rujukan

  • Dokumentasi Rails
  • Dokumentasi GraphQL