Rumah  >  Artikel  >  hujung hadapan web  >  GraphQL

GraphQL

PHPz
PHPzasal
2024-08-10 16:38:03672semak imbas

GraphQL

Apakah itu GraphQL?

GraphQL ialah bahasa pertanyaan yang berkuasa untuk API anda dan masa jalan untuk melaksanakan pertanyaan tersebut dengan data anda. Dibangunkan oleh Facebook pada 2012 dan dikeluarkan sebagai projek sumber terbuka pada 2015, GraphQL membenarkan pelanggan meminta data yang mereka perlukan dengan tepat—tidak lebih, tidak kurang.

Ciri Utama:

  • Titik Akhir Tunggal: Tidak seperti REST, yang biasanya menggunakan berbilang titik akhir, GraphQL menggunakan satu titik akhir untuk semua permintaan.
  • Pertanyaan Fleksibel: Pelanggan boleh meminta hanya data khusus yang mereka perlukan dalam satu pertanyaan.
  • Penaipan Kuat: Skema mentakrifkan jenis dan perhubungan dalam API, memastikan pengesahan dan introspeksi data yang mantap.

Bagaimana GraphQL Berbeza daripada REST

1. Pengambilan Data:

  • REHAT: Memerlukan berbilang titik akhir untuk mengambil data berkaitan. Sebagai contoh, anda mungkin perlu menekan /users dan kemudian /users/{id}/posts.
  • GraphQL: Membenarkan mengambil semua data yang diperlukan dalam satu pertanyaan. Anda boleh mendapatkan butiran pengguna dan siaran mereka dalam satu permintaan.

2. Pengambilan berlebihan dan Pengambilan yang kurang:

  • REHAT: Selalunya mengembalikan lebih banyak data daripada yang diperlukan (terlalu mengambil) atau memerlukan permintaan tambahan untuk mendapatkan lebih banyak data (kurang diambil).
  • GraphQL: Pelanggan menyatakan dengan tepat data yang mereka perlukan, menghapuskan kedua-dua pengambilan berlebihan dan kurang ambil.

3. Versi:

  • REHAT: Versi API mungkin perlu dikemas kini (cth., /v1/users ke /v2/users).
  • GraphQL: Berevolusi tanpa membuat versi. Medan dan jenis baharu boleh ditambah tanpa memecahkan pertanyaan sedia ada.

Contoh Pertanyaan GraphQL Asas

Begini cara anda boleh menulis pertanyaan GraphQL untuk mengambil maklumat pengguna:

query {
  user(id: "1") {
    name
    email
    posts {
      title
      content
    }
  }
}

Dalam pertanyaan ini:

  • user(id: "1") menentukan pengambilan pengguna dengan ID 1.
  • Nama medan bersarang, e-mel dan siaran diminta.
  • siaran termasuk tajuk dan kandungan subbidang, membenarkan struktur data bersarang.

Menyediakan Pelayan GraphQL yang Mudah

Untuk bermula dengan GraphQL, mari sediakan pelayan asas menggunakan Node.js dan Apollo Server.

1. Pasang Ketergantungan:

npm install apollo-server graphql

2. Buat Pelayan Asas:

Buat fail bernama index.js dan tambah kod berikut:

const { ApolloServer, gql } = require('apollo-server');

// Define your type definitions
const typeDefs = gql`
  type Post {
    title: String
    content: String
  }

  type User {
    name: String
    email: String
    posts: [Post]
  }

  type Query {
    user(id: String!): User
  }
`;

// Define your resolvers
const resolvers = {
  Query: {
    user: (_, { id }) => ({
      name: "John Doe",
      email: "john.doe@example.com",
      posts: [
        { title: "GraphQL Basics", content: "Learning GraphQL is fun!" }
      ]
    }),
  },
};

// Create an Apollo Server instance
const server = new ApolloServer({ typeDefs, resolvers });

// Start the server
server.listen().then(({ url }) => {
  console.log(`? Server ready at ${url}`);
});

3. Jalankan Pelayan:

node index.js

Pelayan anda kini akan berjalan dan anda boleh mengujinya menggunakan GraphiQL (tersedia di http://localhost:4000) atau mana-mana klien GraphQL.

Mengapa Menggunakan GraphQL?

  • Pemuatan Data yang Cekap: Minta apa yang anda perlukan, mengurangkan pemindahan data yang tidak perlu.
  • Keselamatan Skema & Jenis: Kuatkuasakan struktur data dan sahkan data dengan cekap.
  • Pengalaman Pembangun: Alat seperti GraphiQL dan Apollo Client meningkatkan produktiviti dengan ciri seperti autolengkap dan dokumentasi.

Mulakan dengan GraphQL Hari Ini!

Dengan menggunakan GraphQL, anda boleh membina API yang lebih cekap, fleksibel dan berskala. Nantikan minggu depan, di mana kami akan menyelami lebih mendalam topik GraphQL lanjutan seperti reka bentuk skema dan mutasi.

Atas ialah kandungan terperinci GraphQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn