GraphQL در سال 2015 توسط فیس بوک به عنوان یک زبان پرس و جو برای API ها منتشر شد که پرس و جو و جهش داده ها از مجموعه داده های مختلف را آسان می کند. از یک نقطه پایانی واحد ، می توانید چندین منبع داده را با یک درخواست POST منفرد جستجو کنید و به جش واردارید. GraphQL برخی از نقص طراحی معمول در معماری REST API را برطرف می کند ، مانند موقعیت هایی که نقطه انتهایی اطلاعات بیشتری را نسبت به آنچه در واقع لازم دارید برمی گرداند. همچنین ، هنگام استفاده از API های REST ممکن است برای جمع آوری تمام اطلاعات مورد نیاز خود، ممکن است نیاز به ارسال درخواست به چند مورد از نقاط انتهایی REST داشته باشید – وضعیتی که به آن مشکل n + 1 گفته می شود. نمونه ای از این موارد وقتی پیش می آید که می خواهید اطلاعات کاربر را نشان دهید ، اما باید اطلاعاتی از قبیل جزئیات شخصی و آدرس ها را از نقاط مختلف جمع آوری کنید.
این مشکلات برای GraphQL اعمال نمی شوند زیرا تنها یک نقطه پایانی دارد که می تواند داده ها را از چندین مجموعه بازگرداند. داده بازگشتی به پرس و جویی که به این نقطه پایانی ارسال شده بستگی دارد. در این پرس و جو ساختار داده ای را که می خواهید دریافت کنید ، از جمله هر مجموعه داده تو در تو را تعریف می کنید. علاوه بر یک پرس و جو ، می توانید از یک جهش برای تغییر داده ها روی یک سرور مجازی GraphQL و یک اشتراک نیز برای مشاهده تغییرات در داده استفاده کنید. برای کسب اطلاعات بیشتر در مورد GraphQL و مفاهیم آن ، می توانید به مطالب موجود در وب سایت رسمی مراجعه کنید.
از آنجا که GraphQL یک زبان پرس و جو با انعطاف پذیری زیاد است ، به خصوص با داده های مبتنی بر مستندات مانند MongoDB ترکیب می شود. هر دو فناوری مبتنی بر طرحواره های سلسله مراتبی ، تایپ شده هستند و در جامعه جاوا اسکریپت محبوب میباشند. همچنین ، داده های MongoDB به عنوان اشیاء JSON ذخیره می شوند ، بنابراین هیچ تجزیه و تحلیل اضافی در سرور مجازی GraphQL لازم نیست.
در این آموزش ، یک سرور مجازی GraphQL با Node.js ایجاد خواهید کرد و می توانید داده ها را از یک پایگاه داده MongoDB که در اوبونتو 18.04 در حال اجرا است ، پرس و جو کنید و جهش دهید. در پایان این آموزش ، شما می توانید با استفاده از یک نقطه پایانی واحد، هم با ارسال درخواست به سرور مجازی به طور مستقیم از طریق ترمینال و هم با استفاده از رابط پیش ساخته playground در GraphiQL به داده های موجود در بانک اطلاعاتی خود دسترسی داشته باشید. با استفاده از این playground می توانید محتویات سرور مجازی GraphQL را با ارسال پرس و جوها ، جهش ها و اشتراک ها کشف کنید. همچنین ، می توانید نمایش های بصری از طرح هایی را که برای این سرور مجازی تعریف شده است ، پیدا کنید.
در پایان این آموزش ، شما از playground GraphiQL برای ارتباط سریع سرور مجازی GraphQL خود استفاده خواهید کرد:

پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
⦁ سرور مجازی Ubuntu 18.04 که با پیروی از راهنمای تنظیم اولیه سرور مجازی Ubuntu 18.04 تنظیم شده باشد، شامل یک کاربر sudo غیر ریشه و فایروال نیز باشد.
⦁ نصب MongoDB و اجرای آن در اوبونتو 18.04 که می توانید با دنبال کردن آموزش نحوه نصب MongoDB در اوبونتو 18.04 آن را تنظیم کنید.
⦁ Nginx نصب شده ، همانطور که در نحوه نصب Nginx در Ubuntu 18.04 مشاهده می شود ، از جمله مرحله 4 – تنظیم بلوک های سرور مجازی.
⦁ برای دسترسی از راه دور به سرور مجازی GraphQL ، به یک نام دامنه کاملاً واجد شرایط (FQDN) و یک رکورد A نیاز دارید که به IP سرور مجازی شما اشاره کند. در صورت داشتن حساب vpsgol ، می توانید اطلاعات بیشتری در مورد این مورد با خواندن طریق مقدمه DNS اصطلاحات ، مؤلفه ها و مفاهیم ، یا اسناد دامنه و DNS کسب کنید.
⦁ آشنایی با JavaScript ، که می توانید از مجموعه نحوه کدنویسی در جاواسکریپت بیاموزید.
مرحله 1 – تنظیم بانک اطلاعاتی MongoDB
قبل از ایجاد سرور مجازی GraphQL ، اطمینان حاصل کنید که پایگاه داده شما درست پیکربندی شده باشد ، تأیید هویت آن فعال باشد و با داده های نمونه پر شده باشد. برای این کار باید از اعلان خط فرمان به سرور مجازی Ubuntu 18.04 که پایگاه داده MongoDB است متصل شوید. کلیه مراحل این آموزش در این سرور مجازی انجام خواهد شد.
بعد از برقراری اتصال ، دستور زیر را اجرا کنید تا بررسی کنید که آیا MongoDB فعال و روی سرور مجازی شما فعال است:
⦁ $ sudo systemctl status mongodb

خروجی زیر را در ترمینال خود مشاهده خواهید کرد ، نشان می دهد که بانک اطلاعاتی MongoDB به طور فعال در حال اجرا است:
Output
● mongodb.service – An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-02-23 12:23:03 UTC; 1 months 13 days ago
Docs: man:mongod(1)
Main PID: 2388 (mongod)
Tasks: 25 (limit: 1152)
CGroup: /system.slice/mongodb.service
└─2388 /usr/bin/mongod –unixSocketPrefix=/run/mongodb –config /etc/mongodb.conf

قبل از ایجاد دیتابیس که داده های نمونه را در آن ذخیره می کنید ، ابتدا باید یک کاربر ادمین ایجاد کنید ، زیرا کاربران عادی در یک پایگاه داده خاص قرار می گیرند. می توانید با اجرای دستور زیر که پوسته MongoDB را باز می کند ، این کار را انجام دهید:
⦁ $ mongo

با پوسته MongoDB دسترسی مستقیم به پایگاه داده MongoDB خواهید داشت و می توانید کاربران یا بانکهای اطلاعاتی و داده های پرس و جو ایجاد کنید. در داخل این پوسته ، دستور زیر را اجرا کنید که یک کاربر ادمین جدید را به MongoDB اضافه می کند. می توانید کلمات کلیدی هایلایت شده را با نام کاربری و رمز ورود خود جایگزین کنید ، اما فراموش نکنید که آنها را در جایی بنویسید.
⦁ mongo> use admin

⦁ mongo> db.createUser({

⦁ mongo> user: “admin_username”,

mongo> pwd: “admin_password”,

⦁ mongo> roles: [{ role: “root”, db: “admin”}]

⦁ mongo> })

خط اول دستور قبلی دیتابیس را با نام ادمین انتخاب می کند ، یعنی همان دیتابیسی که تمام نقش های ادمین در آن ذخیره می شود. با روش db.createUser () می توانید کاربر واقعی ایجاد کرده و نام کاربری ، رمزعبور و نقش های آن را تعریف کنید.
اجرای این فرمان خروجی زیر را برمی گرداند:
Output
Successfully added user: {
“user” : “admin_username”,
“roles” : [
{
“role” : “root”,
“db” : “admin”
}
]
}

اکنون می توانید پوسته MongoDB را با تایپ کردن exit ببندید.
در مرحله بعد ، دوباره وارد پوسته MongoDB شوید ، اما این بار با کاربر adminجدید:
⦁ $ mongo -u “admin_username” -p “admin_password” –authenticationDatabase “admin”

این دستور پوسته MongoDB را به عنوان یک کاربر خاص باز می کند، که در آن پرچم -u نام کاربری و پرچم -p رمز عبور آن کاربر را مشخص می کند. پرچم اضافی –authenticationDatabase مشخص می کند که می خواهید به عنوان ادمین وارد شوید.
در مرحله بعد ، به یک بانک اطلاعاتی جدید می روید و سپس از روش db.createUser () برای ایجاد یک کاربر جدید دارای مجوز برای ایجاد تغییر در این پایگاه داده استفاده می کنید. بخش هایلایت شده را با اطلاعات مورد نظر خود جایگزین کنید ، حتما این مدارک را یادداشت کنید.
دستور زیر را در پوسته MongoDB اجرا کنید:
⦁ mongo> use database_name

⦁ mongo> db.createUser({

⦁ mongo> user: “username”,

⦁ mongo> pwd: “password”,

⦁ mongo> roles: [“readWrite”]

⦁ mongo> })

با این کار خروجی زیر باز می گردد:
Output
Successfully added user: { “user” : “username”, “roles” : [“readWrite”] }

پس از ایجاد دیتابیس و کاربر ، این بانک اطلاعاتی را با داده های نمونه ای پر کنید که بعداً در این آموزش توسط سرور مجازی GraphQL می توانید جستجو کنید. برای این کار ، می توانید از نمونه مجموعه bios از وب سایت MongoDB استفاده کنید. با اجرای دستورات در قطعه کد زیر ، نسخه کوچکتری از این مجموعه داده bios را در پایگاه داده خود وارد می کنید. می توانید بخش های هایلایت شده را با اطلاعات شخصی خود جایگزین کنید ، اما برای اهداف این آموزش ، نام مجموعه را bios بگذارید:
⦁ mongo> db.bios.insertMany([

⦁ mongo> {

⦁ mongo> “_id” : 1,

⦁ mongo> “name” : {

⦁ mongo> “first” : “John”,

⦁ mongo> “last” : “Backus”

⦁ mongo> },

⦁ mongo> “birth” : ISODate(“1924-12-03T05:00:00Z”),

mongo> “death” : ISODate(“2007-03-17T04:00:00Z”),

⦁ mongo> “contribs” : [

⦁ mongo> “Fortran”,

⦁ mongo> “ALGOL”,

⦁ mongo> “Backus-Naur Form”,

⦁ mongo> “FP”

⦁ mongo> ],

⦁ mongo> “awards” : [

⦁ mongo> {

⦁ mongo> “award” : “W.W. McDowell Award”,

⦁ mongo> “year” : 1967,

⦁ mongo> “by” : “IEEE Computer Society”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> “award” : “National Medal of Science”,

⦁ mongo> “year” : 1975,

⦁ mongo> “by” : “National Science Foundation”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> “award” : “Turing Award”,

⦁ mongo> “year” : 1977,

⦁ mongo> “by” : “ACM”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> “award” : “Draper Prize”,

⦁ mongo> “year” : 1993,

⦁ mongo> “by” : “National Academy of Engineering”

⦁ mongo> }

⦁ mongo> ]

mongo> },

⦁ mongo> {

⦁ mongo> “_id” : ObjectId(“51df07b094c6acd67e492f41”),

⦁ mongo> “name” : {

⦁ mongo> “first” : “John”,

mongo> “last” : “McCarthy”

⦁ mongo> },

⦁ mongo> “birth” : ISODate(“1927-09-04T04:00:00Z”),

⦁ mongo> “death” : ISODate(“2011-12-24T05:00:00Z”),

⦁ mongo> “contribs” : [

⦁ mongo> “Lisp”,

⦁ mongo> “Artificial Intelligence”,

⦁ mongo> “ALGOL”

⦁ mongo> ],

⦁ mongo> “awards” : [

⦁ mongo> {

⦁ mongo> “award” : “Turing Award”,

⦁ mongo> “year” : 1971,

⦁ mongo> “by” : “ACM”

⦁ mongo> },

⦁ mongo> {

mongo> “award” : “Kyoto Prize”,

⦁ mongo> “year” : 1988,

⦁ mongo> “by” : “Inamori Foundation”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> “award” : “National Medal of Science”,

⦁ mongo> “year” : 1990,

⦁ mongo> “by” : “National Science Foundation”

⦁ mongo> }

⦁ mongo> ]

⦁ mongo> }

⦁ mongo> ]);

 

برای اطمینان از اینکه کاربر شما می تواند به دیتابیسی که ایجاد کرده اید وصل شود ، سعی کنید پوسته MongoDB را به عنوان یک کاربر معتبر با دستور زیر باز کنید:
⦁ $ mongo -u “username” -p “password” –authenticationDatabase “database_name”

از همان پرچم های قبلی استفاده میکند، فقط این بار –authenticationDatabase روی پایگاه داده ای که ایجاد کرده اید تنظیم میشود و با داده های نمونه پر میگردد.
اکنون با موفقیت یک کاربر ادمین و کاربر دیگری را اضافه کرده اید که دسترسی به خواندن / نوشتن اطلاعات پایگاه داده با داده های نمونه را دارد. همچنین ، پایگاه داده دارای مجوزهای فعال است به این معنی که یک نام کاربری و رمزعبور برای دسترسی به آن نیاز دارید. در مرحله بعد سرور مجازی GraphQL را ایجاد خواهید کرد که بعداً در آموزش به این پایگاه داده وصل می شود.
مرحله دوم – ایجاد سرور مجازی GraphQL
با پیکربندی پایگاه داده و پر شدن با داده های نمونه ، زمان آن رسیده که یک سرور مجازی GraphQL ایجاد کنیم که بتواند این داده ها را پرس و جو کند و جهش دهد. برای این کار از Express و express-Graphql استفاده می کنید ، که هر دو در Node اجرا می شوند. Express یک چارچوب سبک برای ایجاد سریع سرور مجازی های HTTP Node.js است و Express-Graphql میان افزار را برای ایجاد سریع سرور مجازی های GraphQL امکان پذیر می کند.
اولین قدم اطمینان از به روزرسانی دستگاه شما است:
⦁ $ sudo apt update

در مرحله بعد با اجرای دستورات زیر Node.js را روی سرور مجازی خود نصب کنید. به همراه Node.js همچنین npm را نصب خواهید کرد ، یک مدیر بسته برای JavaScript که روی Node.js. اجرا می شود.
⦁ $ sudo apt install nodejs npm

پس از طی مراحل نصب ، بررسی کنید که آیا نسخه Node.js که اخیراً نصب کرده اید v8.10.0 یا بالاتر است:
⦁ $ node -v

با این کار خروجی زیر باز می گردد:
Output
v8.10.0

برای شروع یک پروژه جدید JavaScript ، دستورات زیر را به عنوان کاربر sudo روی سرور مجازی اجرا کنید و کلمات کلیدی هایلایت شده را با نامی برای پروژه خود جایگزین کنید.
ابتدا وارد دیرکتوری اصلی سرور مجازی خود شوید:
⦁ $ cd

 

این resolverها مستقیماً با طرحواره ها مرتبط هستند و داده هایی را که با این طرح ها مطابقت دارد ، برمی گردانند.

برای راه اندازی سرور مجازی GraphQL ، دستور زیر را در ترمینال اجرا کنید:
⦁ $ npm start

پس از اجرای این برنامه ، اعلان ترمینال ناپدید می شود و پیامی برای تأیید سرور مجازی GraphQL ظاهر می شود:
Output
🚀 Server ready at http://localhost:4000/graphql

اگر اکنون بخش ترمینال دیگری را باز کرده اید ، می توانید با اجرای دستور زیر آزمایش کنید که آیا سرور مجازی GraphQL در حال اجرا است. این کار درخواست POST curlرا با بدنه JSON پس از پرچم –data که شامل پرس و جوی GraphQL شما به نقطه انتهایی محلی است ارسال می کند:
⦁ $ curl -X POST -H “Content-Type: application/json” –data ‘{ “query”: “{ hello }” }’ http://localhost:4000/graphql

با این کار پرس و جو همانطور که در شمای GraphQL در کد شما شرح داده شده است اجرا می شود و داده ها را با فرمت JSON قابل پیش بینی که یکسان با داده های برگشت یافته در resolver هاست، اجرا می کند:
Output
{ “data”: { “hello”: “Hello world!” } }

توجه: در صورت خراب شدن یا گیر نکردن سرور مجازی اکسپرس ، باید فرایند node که روی سرور مجازی اجرا می شود را به صورت دستی از بین ببرید. برای لغو همه این مراحل ، می توانید موارد زیر را اجرا کنید:
⦁ $ killall node

پس از آن می توانید با دستور زیر، سرور مجازی GraphQL مجدداً راه اندازی کنید:
⦁ $ npm start

در این مرحله شما اولین نسخه از سرور مجازی GraphQL را ایجاد کرده اید که هم اکنون در یک نقطه پایانی محلی اجرا می شود که به سرور مجازی شما قابل دسترسی است. در مرحله بعد ، resolver های خود را به پایگاه داده MongoDB وصل خواهید کرد.
مرحله 3 – اتصال به بانک اطلاعاتی MongoDB
با نظم گیری سرور مجازی GraphQL ، اکنون می توانید ارتباط را با پایگاه داده MongoDB که قبلاً پیکربندی کرده و پر از داده کرده اید ، تنظیم نمایید و یک طرح جدید ایجاد کنید که مطابق با این داده ها باشد.
برای اینکه بتوانید از سرور مجازی GraphQL به MongoDB متصل شوید ، بسته JavaScript را برای MongoDB از npm نصب کنید:
⦁ $ sudo npm install –save mongodb

پس از نصب ، index.js را در ویرایشگر متن خود باز کنید:
⦁ $ sudo nano index.js

سپس ، کد هایلایت شده زیر را درست بعد از متعلقات وارد شده به index.js اضافه کنید و مقادیر هایلایت شده را با جزئیات اتصال خود به پایگاه داده محلی MongoDB پر کنید. نام کاربری ، رمز عبور و نام پایگاه داده همان مواردی هستند که در مرحله اول این آموزش ایجاد کرده اید.

اکنون می توانید این تابع context را از طریق resolver های خود فراخوانی کنید و از این طریق متغیرهایی را از پایگاه داده MongoDB بخوانید. اگر به مرحله اول این آموزش بازگردید ، می توانید ببینید که کدام مقادیر در پایگاه داده وجود دارد. از اینجا ، یک طرح جدید GraphQL را تعریف کنید که با این ساختار داده مطابقت دارد. مقدار قبلی را برای طرحواره ثابت با خطوط هایلایت شده زیر بازنویسی کنید:
index.js

 

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

پارامترهای پیش فرض در جاوا اسکریپت  –  اجرای چندین نسخه PHP بر روی یک سرور Debian 10

نحوه راه اندازی یک پروژه React با برنامه React – نصب و ایمن سازی phpMyAdmin در اوبونتو 18

پیکربندی یک تایید اعتبار مجاز(CA) در CentOS 8  –  تنظیم برنامه Node.js برای تولید در CentOS 7

نصب MariaDB در اوبونتو 18.04  –  ایمن کردن Apache با Let’s Encrypt در Debian 10

نحوه نصب Node.js در CentOS 8  –  بازنویسی URL را با mod_rewrite برای Apache در Debian 10

راه اندازی فایروال با استفاده از firewalld در CentOS 8  –  نصب وب سرور Apache در Debian 10

اضافه کردن و حذف کاربران در CentOS 8 –  نصب Apache Tomcat 9 در Debian 10

نصب و استفاده از PostgreSQL در CentOS 8  –  راه اندازی سرور اولیه با Debian 10

نصب MariaDB در CentOS 8  –  چگونه با JSX عناصر واقعی ایجاد کنیم

نصب و پیکربندی VNC در Debian 10  –  استفاده از سرور از راه دور Docker

نصب و ایمن سازی Grafana در اوبونتو 18  –  نحوه نصب Git در CentOS 8

نصب Git در Debian 10 –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرورهای

نحوه نصب Node.js در Debian 10  –  نصب وب سرور Apache در CentOS 7

نحوه نصب Webmin در Debian 10  –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرور

نصب وردپرس با بانک اطلاعاتی در اوبونتو  – ساخت و استقرار سرور GraphQL با Node.js و MongoDB

نصب پایتون 3 و تنظیم نویسی محلی macOS  – نصب و ایمن سازی phpMyAdmin با Nginx در سرور

نصب Nagios 4 و نظارت بر سرور اوبونتو 18  –  نصب Python 3 و تنظیم یک محیط برنامه نویسی

نحوه نصب R بر روی Debian 10  –  راه اندازی سرور Prisma روی اوبونتو 18.04

نصب و پیکربندی Laravel با LEMP در اوبونتو 18  –  نصب و پیکربندی pgAdmin 4 در Server Mode

نصب Python 3 و تنظیم برنامه نویسی CentOS 8 – نصب Jitsi Meet در Ubuntu 18.04

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند –