مرحبًا يا من هناك! باعتباري مزودًا لواجهة برمجة التطبيقات (API)، رأيت بنفسي كيف أصبح GraphQL مُغيرًا لقواعد اللعبة في عالم واجهات برمجة التطبيقات (APIs). في هذه المدونة، سأرشدك إلى كيفية إنشاء واجهة برمجة تطبيقات GraphQL.
فهم أساسيات GraphQL
أول الأشياء أولاً، دعونا نتعرف على ماهية GraphQL. على عكس REST، الذي يحتوي على مجموعة ثابتة من نقاط النهاية التي تُرجع هياكل بيانات محددة مسبقًا، يسمح GraphQL للعملاء بتحديد البيانات التي يحتاجون إليها بالضبط. وهذا يعني تقليل جلب البيانات أو جلبها بشكل أقل، وهو ما يمثل ميزة إضافية كبيرة.
تخيل أنك تقوم بإنشاء تطبيق يحتاج إلى معلومات المستخدم. باستخدام REST API، قد يكون لديك نقطة نهاية مثل/المستخدمين/:المعرفوالتي تقوم بإرجاع مجموعة كاملة من بيانات المستخدم، والتي قد لا يستخدم تطبيقك بعضها. ولكن مع GraphQL، يمكن للعميل إرسال استعلام مثل هذا:
الاستعلام { المستخدم (المعرف: "123") { اسم البريد الإلكتروني } }
ولن يحصل إلا علىاسموبريد إلكترونيحقول المستخدم مع المعرف123.
تهيئة البيئة
لإنشاء واجهة برمجة تطبيقات GraphQL، ستحتاج إلى بعض الأدوات. أشهر خادم لبناء خوادم GraphQL هو Apollo Server، والذي يعمل بشكل رائع مع Node.js. لذا، إذا لم تكن قد قمت بذلك بالفعل، قم بتثبيت Node.js على جهازك.
بمجرد الانتهاء من تشغيل Node.js، قم بإنشاء دليل جديد لمشروعك وانتقل إليه في المحطة الطرفية الخاصة بك. بعد ذلك، قم بتهيئة مشروع Node.js جديد عن طريق تشغيل:
npm الحرف الأول -y
سيؤدي هذا إلى إنشاءpackage.jsonالملف في دليل المشروع الخاص بك.
بعد ذلك، قم بتثبيت Apollo Server وGraphQL:
npm تثبيت Apollo-server graphql
تعريف المخطط
المخطط هو قلب واجهة برمجة تطبيقات GraphQL. فهو يحدد أنواع البيانات التي يمكن للعملاء الاستعلام عنها والعلاقات بينهم.
لنفترض أننا نبني واجهة برمجة التطبيقات (API) لمكتبة بسيطة. قد يكون لدينا أنواع لكتاب,مؤلف، والنوع. إليك كيفية تحديد المخطط الأساسي في JavaScript:
const { gql } = require('apollo-server'); const typeDefs = gql` type Book { id: ID! العنوان: سلسلة! المؤلف: المؤلف! النوع: النوع! } اكتب المؤلف {المعرف: المعرف! الاسم: سلسلة! الكتب: [كتاب!]! } اكتب النوع {المعرف: المعرف! الاسم: سلسلة! الكتب: [كتاب!]! } اكتب الاستعلام { الكتب: [كتاب!]! كتاب(المعرف: المعرف!): مؤلفو الكتاب: [المؤلف!]! المؤلف (المعرف: المعرف!): أنواع المؤلف: [النوع!]! النوع (المعرف: المعرف!): النوع } `; Module.exports = typeDefs;
في هذا المخطط، قمنا بتعريف ثلاثة أنواع (كتاب,مؤلف، والنوع) و أاستفسارالنوع الذي يسمح للعملاء بجلب البيانات. ال!الرمز يعني أن الحقل مطلوب.
الحلول
المحللون عبارة عن وظائف تخبر GraphQL بكيفية الحصول على البيانات لكل حقل في المخطط. على سبيل المثال، محلل لكتبالميدان فياستفسارtype قد يجلب قائمة الكتب من قاعدة بيانات.
فيما يلي مجموعة بسيطة من أدوات الحل لواجهة برمجة تطبيقات مكتبتنا:
const { الكتب، المؤلفون، الأنواع } = require('./data'); حلول const = { Query: { books: () => books, book: (parent, { id }) => books.find(book => book.id === id)، المؤلفون: () => المؤلفون، المؤلف: (parent, { id }) => Authors.find(author => Author.id === id)، الأنواع: () => الأنواع، النوع: (parent, { id }) => Genre.find(genre => Gen.id === id) }، الكتاب: { المؤلف: (كتاب) => Authors.find(author => Author.id === book.authorId)، النوع: (book) => Genres.find(genre => Genre.id === book.genreId) }، المؤلف: { الكتب: (author) => books.filter(book => book.authorId === Author.id) }, النوع: { الكتب: (النوع) => books.filter(book => book.genreId === Genre.id) } }; Module.exports = المحللون؛
في هذا الكود، نفترض أن لدينا بعض البيانات النموذجية في ملفdata.jsملف. أجهزة الحل لاستفسارtype بإرجاع البيانات المناسبة، وتتعامل أدوات الحل الخاصة بالأنواع الأخرى مع العلاقات بين الأنواع.
إنشاء الخادم
الآن بعد أن أصبح لدينا المخطط والمحللات الخاصة بنا، فقد حان الوقت لإنشاء خادم Apollo.
const { ApolloServer } = require('apollo-server'); const typeDefs = require('./schema'); أدوات الحل const = require('./resolvers'); خادم const = new ApolloServer({ typeDefs, Resolvers }); server.listen().then(({ url }) => { console.log(`الخادم جاهز في ${url}`); });
عند تشغيل هذا الرمز مععقدة الفهرس.js(على افتراض أن الملف الخاص بك تم تسميتهIndex.js)، سيبدأ الخادم في العمل على منفذ محلي، ويمكنك الوصول إلى ملعب GraphQL على عنوان URL المطبوع في وحدة التحكم.
اختبار واجهة برمجة التطبيقات
بمجرد تشغيل الخادم، يمكنك اختبار واجهة برمجة التطبيقات (API) الخاصة بك باستخدام ملعب GraphQL. افتح عنوان URL في متصفحك، وسترى واجهة يمكنك من خلالها كتابة الاستعلامات والطفرات.
على سبيل المثال، يمكنك كتابة استعلام للحصول على كافة الكتب:
الاستعلام { الكتب { عنوان المؤلف { الاسم } } }
سيعرض هذا الاستعلام قائمة بالكتب بعناوينها وأسماء مؤلفيها.
الأمن والأداء
عند إنشاء واجهة برمجة تطبيقات GraphQL، يعد الأمان والأداء أمرًا بالغ الأهمية. تحتاج إلى التأكد من أن العملاء يمكنهم فقط الوصول إلى البيانات المسموح لهم برؤيتها. إحدى الطرق للقيام بذلك هي تنفيذ آليات المصادقة والترخيص.
بالنسبة للأداء، يمكنك استخدام تقنيات مثل التخزين المؤقت والتجميع. يحتوي Apollo Server على دعم مدمج للتخزين المؤقت، ويمكنك استخدام المكتبات مثلمحمل البياناتلتجميع طلبات قاعدة البيانات.


التكامل مع الأنظمة الموجودة
باعتبارك مزود واجهة برمجة التطبيقات، قد تحتاج إلى دمج واجهة برمجة تطبيقات GraphQL مع الأنظمة الحالية، مثل قواعد البيانات أو واجهات برمجة التطبيقات الأخرى. يمكنك استخدام الموصلات أو المحولات للتفاعل مع هذه الأنظمة. على سبيل المثال، إذا كنت تستخدم قاعدة بيانات PostgreSQL، فيمكنك استخدام ملحقصمكتبة للاتصال بها وجلب البيانات.
خاتمة
يعد إنشاء واجهة برمجة تطبيقات GraphQL طريقة رائعة لتوفير وصول مرن وفعال إلى البيانات لعملائك. باتباع الخطوات الموضحة في هذه المدونة، يمكنك إنشاء واجهة برمجة تطبيقات GraphQL قوية تلبي احتياجات المستخدمين لديك.
إذا كنت مهتمًا باستخدام خدمات API الخاصة بنا أو لديك أي أسئلة حول تطوير GraphQL API، فلا تتردد في التواصل معنا لإجراء مناقشة بشأن الشراء. يسعدنا دائمًا الدردشة ومساعدتك في العثور على أفضل الحلول لعملك.
نحن نقدم أيضًا واجهات برمجة التطبيقات المتعلقة بمختلف الصناعات. على سبيل المثال، إذا كنت تعمل في مجال صناعة الأدوية، فقد تكون مهتمًا بواجهات برمجة التطبيقات ذات الصلة بمنتجات مثلاناستروزولوجوايفينيسين. يمكنك أيضًا التحقق من المزيد حولاناستروزولعلى موقعنا.
مراجع
- وثائق خادم أبولو
- مواصفات GraphQL
- وثائق Node.js
