Mengapa Menggunakan GraphQL di atas? REST - AWS AppSync

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengapa Menggunakan GraphQL di atas? REST

RESTadalah salah satu landasan gaya arsitektur web. APIs Namun, ketika dunia menjadi lebih saling berhubungan, kebutuhan untuk mengembangkan aplikasi yang kuat dan terukur akan menjadi masalah yang lebih mendesak. Meskipun REST sering digunakan untuk membangun webAPIs, ada beberapa kelemahan berulang untuk RESTful implementasi yang telah diidentifikasi:

  1. Permintaan data: Menggunakan RESTfulAPIs, Anda biasanya akan meminta data yang Anda butuhkan melalui titik akhir. Masalah muncul ketika Anda memiliki data yang mungkin tidak begitu rapi dikemas. Data yang Anda butuhkan mungkin berada di belakang beberapa lapisan abstraksi, dan satu-satunya cara untuk mengambil data adalah dengan menggunakan beberapa titik akhir, yang berarti membuat beberapa permintaan untuk mengekstrak semua data.

  2. Overfetching dan underfetching: Untuk menambah masalah beberapa permintaan, data dari setiap titik akhir didefinisikan secara ketat, artinya Anda akan mengembalikan data apa pun yang ditentukan untuk ituAPI, bahkan jika Anda tidak menginginkannya secara teknis.

    Hal ini dapat mengakibatkan pengambilan berlebihan, yang berarti permintaan kami mengembalikan data yang berlebihan. Misalnya, katakanlah Anda meminta data personel perusahaan dan ingin mengetahui nama-nama karyawan di departemen tertentu. Titik akhir yang mengembalikan data akan berisi nama, tetapi mungkin juga berisi data lain seperti jabatan atau tanggal lahir. Karena API sudah diperbaiki, Anda tidak bisa hanya meminta nama saja; sisa data menyertainya.

    Situasi sebaliknya di mana kita tidak mengembalikan cukup data disebut under-fetching. Untuk mendapatkan semua data yang diminta, Anda mungkin harus membuat beberapa permintaan ke layanan. Bergantung pada bagaimana data disusun, Anda dapat mengalami kueri yang tidak efisien yang mengakibatkan masalah seperti masalah n+1 yang ditakuti.

  3. Iterasi pengembangan lambat: Banyak pengembang menyesuaikannya RESTful APIs agar sesuai dengan aliran aplikasi mereka. Namun, seiring berkembangnya aplikasi mereka, baik bagian depan maupun backend mungkin memerlukan perubahan ekstensif. Akibatnya, APIs mungkin tidak lagi sesuai dengan bentuk data dengan cara yang efisien atau berdampak. Ini menghasilkan iterasi produk yang lebih lambat karena kebutuhan akan API modifikasi.

  4. Kinerja dalam skala: Karena masalah peracikan ini, ada banyak area di mana skalabilitas akan terpengaruh. Kinerja di sisi aplikasi mungkin terpengaruh karena permintaan Anda akan mengembalikan terlalu banyak data atau terlalu sedikit (menghasilkan lebih banyak permintaan). Kedua situasi menyebabkan ketegangan yang tidak perlu pada jaringan yang mengakibatkan kinerja yang buruk. Di sisi pengembang, kecepatan pengembangan dapat dikurangi karena Anda APIs sudah diperbaiki dan tidak lagi sesuai dengan data yang mereka minta.

Nilai jual GraphQL adalah untuk mengatasi kekurangan. REST Berikut adalah beberapa solusi utama yang ditawarkan GraphQL kepada pengembang:

  1. Titik akhir tunggal: GraphQL menggunakan titik akhir tunggal untuk menanyakan data. Tidak perlu membangun beberapa APIs agar sesuai dengan bentuk data. Ini menghasilkan lebih sedikit permintaan melalui jaringan.

  2. Pengambilan: GraphQL memecahkan masalah abadi dari pengambilan berlebihan dan kurang hanya dengan mendefinisikan data yang Anda butuhkan. GraphQL memungkinkan Anda membentuk data agar sesuai dengan kebutuhan Anda sehingga Anda hanya menerima apa yang Anda minta.

  3. Abstraksi: APIs GraphQL berisi beberapa komponen dan sistem yang menggambarkan data menggunakan standar agnostik bahasa. Dengan kata lain, bentuk dan struktur data distandarisasi sehingga bagian depan dan backend tahu bagaimana data akan dikirim melalui jaringan. Hal ini memungkinkan pengembang di kedua ujungnya untuk bekerja dengan sistem GraphQL dan tidak di sekitar mereka.

  4. Iterasi cepat: Karena standarisasi data, perubahan pada satu ujung pengembangan mungkin tidak diperlukan di sisi lain. Misalnya, perubahan presentasi frontend mungkin tidak menghasilkan perubahan backend yang ekstensif karena GraphQL memungkinkan spesifikasi data untuk dimodifikasi dengan mudah. Anda cukup menentukan atau memodifikasi bentuk data agar sesuai dengan kebutuhan aplikasi saat tumbuh. Ini menghasilkan pekerjaan pengembangan yang kurang potensial.

Ini hanya beberapa manfaat dari GraphQL. Di beberapa bagian berikutnya, Anda akan mempelajari bagaimana GraphQL terstruktur dan properti yang menjadikannya alternatif yang unik. REST