استراتژیهای سئو برای GraphQL APIs

ساخت و کار با GraphQL در پروژه‌های جاوا اسکریپت

از سوی دیگر، اگر به دنبال کارایی بالا و بارگذاری بهینه داده‌ها هستید، GraphQL می‌تواند بهترین انتخاب باشد. برای استفاده از GraphQL در وردپرس، بهترین گزینه استفاده از پلاگین WPGraphQL است. این پلاگین به‌صورت رایگان در دسترس است و به شما اجازه می‌دهد تا از GraphQL برای واکشی داده‌های وردپرس استفاده کنید. همانطور که می دانید در GraphQL برای ویرایش داده ها نیاز به یک mutation داریم بنابراین به جای Query@ از Mutation@ استفاده کرده ایم. اولین mutation ما برای ثبت یک پست جدید با متد createPost است.

در صورتی که چند پست دیگر را نیز اضافه کنید همه آن ها برایتان برگردانده می شوند. مطمئن باشید که نام کاربری  رمز عبور خود برای PostgreSQL را می دانید. GraphQL از ویژگی اشتراک‌گذاری داده‌ها پشتیبانی می‌کند، که به کلاینت این امکان را می‌دهد تا تغییرات لحظه‌ای داده‌ها را دریافت کند. این ویژگی به خصوص برای اپلیکیشن‌هایی که نیاز به بروزرسانی زمان واقعی دارند بسیار کاربردی است. کلاینت می‌تواند دقیقا مشخص کند که چه داده‌هایی را نیاز دارد و تنها همان داده‌ها را دریافت کند. این ویژگی به خصوص برای پروژه‌هایی که نیاز به داده‌های مختلف دارند بسیار مفید است.

اگر پروژه‌ای با تعداد منابع محدود و درخواست‌های ساده دارید، REST API انتخاب مناسبی است. استفاده از این روش برای پروژه‌های کوچک بسیار ساده‌تر و بهینه‌تر است. REST API به دلیل استفاده گسترده از آن در سطح اینترنت و سادگی اصول آن، یکی از محبوب‌ترین روش‌ها برای توسعه API‌ها است. بسیاری از توسعه‌دهندگان با این روش آشنایی دارند و ابزارها و کتابخانه‌های متعددی برای پیاده‌سازی آن وجود دارد. همانطور که به آن اشاره شد GraphQl ساختار جدیدی است که برای توسعه API ها مورد استفاده قرار می‌گیرد و جایگزین مناسبی برای API‌هایی است که باREST  توسعه داده می‌شدند. شما این امکان را دارید که طرح خود را در کد Go اعلام کنید و بسته در زمان اجرا بررسی می کند.

یادتان باشد که حتما از decorator ای به نام entity بالای نام کلاس استفاده کنید (decorator ها از قابلیت های تایپ اسکریپت هستند). در REST، هر منبع داده یک endpoint مخصوص به خود دارد و کلاینت برای هر نوع داده باید به یک URL خاص مراجعه کند. اما در GraphQL، همه داده‌ها از طریق یک endpoint واحد قابل دسترسی هستند و کلاینت می‌تواند دقیقاً مشخص کند که چه داده‌هایی را نیاز دارد. REST API (Representational State Transfer) یک معماری نرم‌افزاری برای توسعه API‌ها است که در دهه 2000 میلادی توسط روی فیلدینگ معرفی شد. این معماری از HTTP به عنوان پروتکل ارتباطی استفاده می‌کند و بر اساس عملیات‌های CRUD (ایجاد، خواندن، بروزرسانی، حذف) طراحی شده است. Typeها، شیءهای خاصی هستند که چگونگی نمایشAPI  را تعیین می‌کنند.

در مرحله بعدی Query@ را صدا می زنیم تا مشخص کنیم این متد یک Query است و نوع داده های برگردانده شده را آرایه ای از Post می گذاریم. در GraphQL برای نوشتن آرایه ای از یک چیز، یک آرایه را قرار داده و آن چیز را درون آرایه قرار می دهیم، در حالی که در تایپ اسکریپت باید علامت آرایه را بعد از آن چیز قرار بدهید. تعیین تایپ برگردانده شده در قسمت Query@ برای GraphQL و کسانی است که می خواهند توسعه front-end را انجام بدهند، تا بدانند دقیقا چه چیزی دریافت خواهند کرد. تعامل بین فرانت اند و بک اند باید به‌صورت کاملاً هماهنگ باشد و این رابطه هماهنگ برای ایجاد وب اپلیکیشن کارآمد و شهودی بسیار مهم است. از طریق یک سری درخواست‌ها و پاسخ‌ها که توسط APIها تسهیل می‌شوند، فرانت اند و بک اند به طور مؤثر با هم ارتباط برقرار می‌کنند تا تجربه‌ای یکپارچه و پویا برای کاربر فراهم کنند.

متغیر schemaExample تعریف طرحواره است و سرور بر روی پورت 8080 با روش ListenAndServe بسته http اجرا می شود. در این مثال ساده، ما یک کوئری به نام "hello" تعریف کرده‌ایم که یک رشته "Hello, world!" را برمی‌گرداند. شما می‌توانید سرور خود را با اجرای دستور node راه‌اندازی کنید و از طریق URL ارائه شده به آن دسترسی پیدا کنید. این تنها یک مثال ساده بود و شما می‌توانید با اضافه کردن نوع‌ها و کوئری‌های پیچیده‌تر، سرور خود را گسترش دهید. بهتر است ابتدا بدانیم که API چیست و چه نقشی در توسعه وب‌سایت‌ها دارد؟ APIها ستون فقرات ارتباط بین مشتریان و سرورها در دنیای مدرن توسعه وب و موبایل هستند. دو تا از محبوب‌ترین روش‌ها برای مدیریت این ارتباط، API ‌های RESTful و GraphQL هستند.

وقتی از یک وب‌سایت بازدید می‌کنید، آنچه می‌بینید و با آن تعامل می‌کنید فقط نوک یک کوه یخ است. بسیار شبیه به یک کوه یخ، بیشتر عملیات در زیر سطح انجام می‌شود. این قسمت که اغلب نادیده گرفته می‌شود برای عملکرد صحیح قسمت قابل‌مشاهده بسیار مهم است. تعامل بین فرانت اند و بک اند رقصی از درخواست‌ها و پاسخ‌ها است که توسط پروتکل‌هایی مانند HTTP (پروتکل انتقال ابر متن) تسهیل می‌شود. سرویس های GraphQL بوسیله تعریف Typeها و فیلدهای مربوط به Typeها ایجاد می شود و سپس توابعی را برای هر فیلد در هر Type فراهم می کند. افزودن فیلدها و Typeهای جدید به APIهای GraphQL، تاثیری بر Queryهای موجود ندارد.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند. برخلاف REST که ممکن است اطلاعات بیشتری مثل آدرس یا شماره تلفن را بازگرداند. Will Guedes یکی از بنیانگذاران و CTO در Yottled است ، که ابزارهای نرم افزاری را برای رزرو مشتری، CRM، پرداخت ها و موارد دیگر به مشاغل کوچک و مبتنی بر خدمات ارائه می دهد. Docker Compose یک ابزار قدرتمند برای مدیریت چند سرویس Docker است که به شما این قابلیت را می‌دهد تا کلیه تنظیمات خدماتی را... REST (Representational State Transfer) یک سبک معماری برای طراحی APIهاست که از استانداردهای HTTP بهره‌ می‌برد.

در این پروژه می خواهیم یک وب سایت را به صورت full stack طراحی کنیم، یعنی هم front-end و هم back-end را با تکنولوژی های روز دنیا طراحی کنیم تا شما با پروژه های بزرگ و واقعی آشنا شوید. البته توجه داشته باشید که هدف من از این مقاله یادگیری راه اندازی اولیه و ترکیب تکنولوژی های مختلف با یکدیگر است. در پایان جلسه به این نتیجه رسیدیم که هیچ تکنولوژی بر دیگری ارجحیت نداره و ماهیت پروژه هست که مشخص می‌کنه از کدوم روش استفاده کنیم. از این پس قرار شد اگر پروژه‌هامون بیشتر محتوایی باشند از GraphQL استفاده کنیم و در صورتی که عملیات POST، PUT و DELTE بیشتر بود، از روش REST استفاده کنیم. در پروژه‌های بزرگ با تعداد زیادی منابع و endpoint، مدیریت و نگهداری API ممکن است چالش‌برانگیز شود. به خصوص اگر نیاز به سفارشی‌سازی داده‌های مختلف برای کلاینت‌های مختلف باشد.

در یک مثال بسیار رایج، توسعه دهندگانی که بدون آینده نگری کار می کنند، اغلب بدون نیاز به راحتی، دسترسی با کد سخت را به سرورهای GraphQL و حل کننده ها کنترل می کنند. انجام این کار عملکرد و امنیت در مقیاس را مختل می کند، تا زمانی که تیم ها به عقب برگردند و با زحمت آن کد را حذف کنند. GraphQL یک زبان پرس‌وجو (query language) برای APIهاست که توسط فیسبوک توسعه یافته است. این زبان به توسعه‌دهندگان اجازه می‌دهد تنها داده‌هایی را که نیاز دارند درخواست ‌کنند. با این حساب هر کاربر یک username دارد که باید unique یا یکتا (غیرتکراری) باشد و همچنین فیلد رمز عبور را داریم که تایپ آن را text گذاشته ام تا فضا کم نیاوریم. شما می توانید انواع داده دیگر را نیز انتخاب کنید اما من text را برای رمز عبور ترجیح می دهم.

در جلسه بعدی برایتان توضیح خواهم داد که چطور می توانیم این کار را انجام بدهیم. کلید یادگیری این است که خودتان این کار ها را انجام بدهید بنابراین قبل از رفتن به قسمت بعد بهتر است خودتان سعی در حل این مشکل کنید. حالا که مطمئن شدیم همه چیز برایمان برگردانده می شود می توانیم دستور find و log را نیز کامنت کنیم. در ادامه پروژه دائما به آن برمی گردیم و آن را ویرایش می کنیم چرا که باید جدول های جدید و ستون های جدیدی را تعریف کنیم. تنظیمات اضافه شده به این فایل، همان قسمت انتهایی آن (فیلد mikro-orm) است. اگر بخواهیم فایل پیکربندی ما یک فایل تایپ اسکریپت (پسوند ts) باشد باید خصوصیت useTsNode را روی true بگذاریم.

انتخاب بین GraphQL و REST API به نیازهای خاص پروژه شما بستگی دارد. اگر پروژه شما ساده است و نیاز به کش کردن داده‌ها و مدیریت منابع مختلف به صورت آسان دارید، REST API انتخاب مناسبی است. از سوی دیگر، اگر پروژه شما پیچیده است و نیاز به انعطاف‌پذیری بیشتری در دریافت داده‌ها دارید، GraphQL گزینه بهتری خواهد بود. اگرچه GraphQL انعطاف‌پذیری بیشتری ارائه می‌دهد، اما پیاده‌سازی و نگهداری آن به مراتب پیچیده‌تر از REST است. توسعه‌دهندگان باید برای ایجاد schema، resolverها و مدیریت درخواست‌های پیچیده آماده باشند.

توجه داشته باشید که من Field@ را به password اضافه نکرده ام چرا که نمی خواهم کسی اجازه داشته باشد رمز عبور دیگر کاربران را مشاهده کند. از آنجایی که فیلد id در همین ابتدا مقداری ندارد و باید در هنگام ثبت داده در پایگاه داده مقدار بگیرد، وجود علامت ! رعایت این مسئله برای تمام ستون های که مقدار اولیه ندارند الزامی است. ستون های createdAt و updatedAt به ترتیب نشان دهنده زمان ثبت یک ردیف در جدول و زمان به روز رسانی آن هستند. این دو ستون معمولا در اکثر جدول ها وجود دارند و بسیار کاربردی هستند. ستون آخر نیز title یا عنوان است که فعلا آن را برای تست نگه می دارم.

شما باید طرح خود را در یک فایل schema.graphql در دایرکتوری کاری خود داشته باشید تا پروژه را مقداردهی اولیه کنید. Gqlgen یکی از کامل‌ترین بسته‌های GraphQL در اکوسیستم Go است. می توانید مستندات و نمونه هایی را با بسته ایجاد کنید و پرس و جوها، جهش ها و اشتراک ها را ایجاد کنید. چندین بسته Go وجود دارد که می توانید از آنها برای ساخت برنامه های مبتنی بر GraphQL، از سرورها گرفته تا API ها، استفاده کنید. GraphQL یک مشخصات مبتنی بر HTTP است که بسیاری از مشکلاتی را که هنگام ساختن API های RESTful با آن مواجه می شوید، حل می کند. برای ساخت API های پیچیده مناسب است زیرا می توانید از یک نقطه پایانی برای دسترسی به داده های بسیاری از طرحواره ها استفاده کنید.

GraphQL یک زبان کوئری برای API‌هاست که توسط فیسبوک توسعه داده شده است. هدف اصلی آن ارائه یک راهکار کارآمدتر و انعطاف‌پذیرتر نسبت به روش‌های سنتی مانند REST است. با استفاده از GraphQL، شما می‌توانید دقیقا داده‌هایی که نیاز دارید را از سرور درخواست کنید و نیازی به دریافت داده‌های اضافی ندارید. این ویژگی باعث کاهش پهنای باند مصرفی و افزایش سرعت اپلیکیشن شما می‌شود. GraphQL یک زبان پرس‌وجو برای API است که فیس‌بوک آن را توسعه داد. برخلاف REST، GraphQL این امکان را به توسعه‌دهندگان می‌دهد تا دقیقاً مشخص کنند که چه داده‌هایی را نیاز دارند.

سپس کد boilerplate را تولید می کند که می توانید آن را برای تنظیم سرور GraphQL و API خود تنظیم کنید. بسیاری از شرکت‌های بزرگ مانند فیس‌بوک، توییتر، گیت‌هاب و شاپیفای از GraphQL برای بهبود کارایی APIهای خود استفاده می‌کنند. این شرکت‌ها با استفاده از GraphQL، تجربه کاربری بهتری را به کاربران خود ارائه می‌دهند. REST ممکن است داده‌های غیرضروری برگرداند که این موضوع می‌تواند در پروژه‌های بزرگ باعث پیچیدگی و افزایش حجم کار شود. نمونه‌های واقعیبا مطالعه مطالعات موردی از پروژه‌های موفقی که از GraphQL استفاده کرده‌اند، شما می‌توانید الگوها و روش‌های کارآمدی را که در این پروژه‌ها استفاده شده است، بیاموزید. قهرمانان GraphQL در سازمان شما باید به این تمایلات رسیدگی کنند و تیم گسترده تری را برای حرکت به جلو جمع کنند.

Representational State Transfer یا REST یک سبک معماری برای طراحی برنامه‌های کاربردی شبکه‌ای است. مجموعه‌ای از محدودیت‌ها و مشخصات برای ساخت سرویس‌های وب مورد استفاده برای ارتباط با سایر سیستم‌ها و برنامه‌های کاربردی وب از طریق HTTP را مشخص می‌کند. منابع را از طریق روش‌های HTTP از جمله GET، POST، PUT، DELETE دست‌کاری می‌کند و داده‌های JSON یا XML را برمی‌گرداند. این از یک مدل ارتباطی مشتری - سرور بدون حالت تبعیت می‌کند؛ به این معنی که هر درخواست از مشتری به سرور مستقل است. برای ساخت GraphQL schema باید از پکیج type-graphql استفاده کنیم که یک متد ناهمگام به نام buildSchema را به ما می دهد بنابراین باید await شود.

با این حال، در مقایسه با سایر بسته‌های محبوب، یکی از ساده‌ترین روش‌ها برای استفاده است و اگر تجربه‌ای در GraphQL ندارید، یک بسته شروع عالی است. شما ساختاری را اعلام می کنید که طرحواره GraphQL شما را مدل می کند. این طرحواره GraphQL را از داده های Go تولید می کند تا دسته بندی پرس و جو، پرس و جوهای زنده، جهش ها، اشتراک ها و تولید نمونه را مدیریت کند. بسته graphql-go یک کتابخانه محبوب GraphQL است که هدف آن ارائه مشخصات پیش نویس کامل GraphQL برای ساخت خدمات GraphQL در Go است. GraphQL مسائلی مانند واکشی بیش از حد و کم واکشی را در REST کاهش می دهد.

برخلاف روش‌های سنتی مانند REST API، در GraphQL توسعه‌دهنده می‌تواند دقیقاً مشخص کند که چه داده‌هایی نیاز دارد و تنها آن‌ها را دریافت کند. این امر باعث می‌شود درخواست‌ها سریع‌تر و بهینه‌تر باشند، زیرا هیچ داده اضافی ارسال نمی‌شود. Mutation بعدی ما ویرایش پست ها با متد updatePost است که یک id و یک title را دریافت می کند. من می خواهم title یک فیلد اجباری نباشد بنابراین آن را nullable کرده ام. توجه کنید که اگر بخواهید یک فیلد را nullable کنید باید حتما تایپ آن را به صورت دستی مشخص کنید و من هم همین کار را کرده ام (آن را روی String گذاشته ام). در مرحله بعدی به دنبال چنین پستی گشته ایم و اگر وجود نداشت فقط null را برمی گردانیم، در غیر این صورت پست را ویرایش کرده و برمی گردانیم.

ویژگی دیگری که به عنوان مزیت اصلی GraphQL می‌توان عنوان کرد، این است که می توان از آن در تمامی زبان‌های برنامه‌نویسی استفاده کرد. کافیست به صفحه‌ گیت‌هاب گراف کیوال بروید تا به راحتی بتوانید ابزار Open Source را روی پروژه خود پیاده سازی کنید. در حال حاضر شرکت‌های بزرگی مثل Github ،Facebook ،Pinterest از این ابزار قدرتمند برای توسعه ی api‌های خود استفاده می ‌کنند. بنابراین شما به هیچ عنوان محدود به زبان خاصی نیستید و با یادگیری گراف کیوال می‌توانید در زبان مورد نظر خود از آن استفاده کنید. متد Hello ساختار query یک حل‌کننده برای نقطه پایانی GraphQL است که hello world را برمی‌گرداند.

REST API از روش‌های استاندارد امنیتی مانند OAuth و JWT برای احراز هویت و مجوزدهی استفاده می‌کند. امنیت در GraphQL نیز مشابه است، اما به دلیل انعطاف‌پذیری بالا، ممکن است نیاز به پیاده‌سازی استراتژی‌های پیچیده‌تری برای مدیریت مجوزهای دسترسی به داده‌ها باشد. اگر بخواهیم به زبان ساده تر به تعریف برنامه نویسی بپردازیم ... علاوه بر آن آپدیت‌های شما را هم انجام می‌دهد بدون این که نیاز به تغییر api باشد، در عین حال که به متدهای قبلی هم پاسخگو است. با توجه به این که دنیای وب روز به روز رو به پیشرفت است و همچنین نیاز روز افزون به api‌ها از وب سرور‌ها و همچنین گسترس اپ های دستگاه‌ها، نیاز بیشتری بهapi  وجود دارد.

در نظر داشته باشید که در GraphQL باید به همین شکل (یعنی با S بزرگ) نوع داده String را مشخص کنید. GraphQL یک زبان پرس و جو و زمان اجرا برای ایجاد و اجرای کوئری‌های API است. این برنامه توسط تیم فیس‌بوک در سال 2012 ایجاد شد و در سال 2015 به‌صورت منبع باز درآمد. این طرح‌واره داده‌ها را در API ارائه می‌دهد، به کاربران اجازه خواهد داد ساختار داده مورد ‌نیاز خود را مشخص کنند و سرور فقط داده‌های درخواستی را برمی‌گرداند. این می‌تواند مقدار داده‌های ارسال شده از طریق شبکه را کاهش دهد و کار با API ‌های دارای طرح‌های داده پیچیده را بسیار آسان‌تر کند.

به همین دلیل بسیار مهم است که در صورت امکان از ابتدا، منابع، داده‌ها و بارهای کاری GraphQL را به عنوان بخشی از استقرار سازمان خود فعال کنید. این درخواست تنها عنوان، محتوا و تاریخ پست‌ها را واکشی می‌کند، که این یکی از مزیت‌های اصلی GraphQL نسبت به REST API است، زیرا تنها داده‌های ضروری ارسال می‌شود. بنابراین به همین راحتی توانسته ایم Mikro ORM و type-graphql را ترکیب کنیم. اگر این کار را نمی کردیم باید برای graphql یک کلاس جداگانه تعریف می کردیم. در ضمن توجه داشته باشید که ما فقط یک پست را در پایگاه داده داریم بنابراین فقط همین یک پست برایمان برگردانده شده است.

یکی از ویژگی‌های جذاب GraphQL این است که شما می‌توانید چندین کوئری و Mutation را در یک درخواست ترکیب کنید و به این ترتیب تعداد درخواست‌ها به سرور را کاهش دهید. از کودکی به کامپیوتر و دنیای دیجیتال علاقه داشتم، به همین دلیل ترک تحصیل کردم و تمام تلاش خودم را صرفا برای یادگیری کامپیوتر، طراحی، برنامه نویسی و ... در کنار مشاغل مختلفی که مجبور به انجامشان بودم برنامه نویسی را یاد گرفتم و از سال 1390 وارد بازار کار شدم و همیشه در تلاش هستم تا چالش های روبرو را با موفقیت پشت سر بگذارم. هنگامی که بک اند درخواست را دریافت می‌کند، آن را پردازش کرده و با پرس‌وجو از پایگاه داده، انجام محاسبات یا هر اقدام ضروری دیگر، داده‌ها یا تأیید را به فرانت اند ارسال می‌کند. سپس frontend این داده‌ها را می‌گیرد و صفحه وب را بر این اساس به‌روز می‌کند.

Mikroorm از ts-node برای خواندن فایل پیکربندی استفاده می کند و به همین دلیل بود که از همان ابتدا پکیج ts-node را نصب کرده بودیم. این پروژه برای افرادی طراحی شده است که زمان مناسبی را در دنیای توسعه وب گذرانده اند و می توانند به صورت حرفه ای به طراحی front-end و back-end بپردازند. در REST API، ممکن است درخواست‌های بسیاری برای منابع مختلف ارسال شود که موجب over-fetching یا under-fetching داده‌ها می‌شود. در over-fetching، کلاینت داده‌های غیرضروری دریافت می‌کند و در under-fetching، ممکن است داده‌های کافی دریافت نشود و نیاز به درخواست‌های اضافی باشد. در مقابل، GraphQL این مشکل را حل کرده و به کلاینت اجازه می‌دهد که تنها داده‌های مورد نیاز خود را دریافت کند.

برای اینکه این تایپ را مشخص کنیم از دستور خاصی در تایپ اسکریپت به نام Parameters استفاده کرده ایم. این دستور یک تابع را می گیرد و سپس تایپ پارامتر های آن را به صورت یک آرایه برمی گرداند. من تایپ تابع MikroORM.init را با استفاده از دستور typeof به آن داده ام. ما تایپ اولین آرگومان از متد init رامی خواهیم بنابراین اولین عضو از آرایه برگردانده شده را گرفته ایم. اگر اینطور نباشد در هنگام پاس دادن آن در index.ts از تایپ اسکریپت خطا می گیریم.

یکی از مزایای استفاده از GraphQL این است که شما می‌توانید از ابزارهایی مانند GraphiQL و Apollo Client برای آزمایش و مدیریت کوئری‌ها و Mutation‌ها استفاده کنید. این ابزارها به شما اجازه می‌دهند تا به صورت گرافیکی کوئری‌ها را ایجاد و اجرا کنید و نتایج را ببینید. همچنین با استفاده از Apollo Client، شما می‌توانید به راحتی GraphQL را در فرانت‌اند اپلیکیشن‌های جاوا اسکریپت خود پیاده‌سازی کنید و داده‌ها را به صورت کارآمد مدیریت کنید. REST که مخفف “نمایندگی انتقال حالت” است، معماری API بر پایه پروتکل HTTP می‌باشد. این معماری اصول ساده‌ای برای تعامل سرویس‌های وب ارائه می‌دهد و از متدهای HTTP مانند GET، POST، PUT و DELETE استفاده می‌کند.

همچنین جامعه توسعه‌دهندگان کوچک‌تری دارد و مستندات آن به اندازه REST کامل نیست. برخلاف REST که کش کردن به سادگی از طریق URLها انجام می‌شود، کش کردن در GraphQL به دلیل استفاده از یک endpoint واحد و پرس‌وجوهای پویا، نیازمند استراتژی‌های پیچیده‌تری است. Uwp چیست و روش تعامل آن با کاربر چگونه است؟ اینها مواردی ... Gqlgen (GraphQL Generator) بسته ای غنی از ویژگی و نوع ایمن برای تولید و ساخت سرورها و API های GraphQL است. در نهایت، می‌خواهم به شما توصیه کنم که از مستندات رسمی GraphQL و منابع آموزشی آنلاین استفاده کنید تا بیشتر با این فناوری آشنا شوید. همچنین، تمرین و کار بر روی پروژه‌های واقعی می‌تواند به شما کمک کند تا بهتر با مفاهیم و نحوه استفاده از GraphQL آشنا شوید.

تنها خصوصیتی که در این بخش نیاز داریم همان resolvers است که من تنها resolver خودمان را به آن پاس داده ام. نهایتا با متد applyMiddleware برنامه ساخته شده توسط express (همان app) را به apollo-server پاس داده ایم تا graphql را روی سرور express ما قرار بدهد. در صورتی که چندین بار دستور ساخت migration را اجرا کرده اید حتما پوشه dist را حذف کرده و npm run watch را دوباره اجرا کنید. چرا؟ به دلیل اینکه با اجرای چند باره دستور ساخت migration، چندین migration در پوشه dist وجود خواهند داشت که با هم تداخل دارند بنابراین باید یک بار دیگر پروژه را از ابتدا کامپایل کنیم. هنگامی که یک سرویس GraphQl در حال اجرا است (به طور معمول با URL در یک سرویس وب)، می‌تواند برای تأیید داده‌های GraphQl را ارسال کند. پرس و جوی دریافت شده ابتدا بررسی می‌شود تا اطمینان حاصل شود که فقط به انواع و فیلدهای تعریف شده اشاره دارد، سپس وظایف ارائه شده را اجرا می کند تا نتیجه را بدست آورد.

امروز اولین جلسه TechTalk شرکت بود و قرار بود راجع به این که کدوم روش برای نوشتن API بهتر هست، بحث کنیم. اول می‌خوایم یه توضیح مختصر راجع به هر کدوم از این روش‌ها بهتون بدیم و بعد نتیجه بگیریم. آنچه در این پست میخوانید مفاهیم پایه‌ای برنامه‌نویسی شئ‌گرا ۱. REST API به دلیل ماهیت ایستا بودن URL‌ها، کش کردن پاسخ‌ها آسان‌تر است. در حالی که کش کردن در GraphQL به دلیل استفاده از یک endpoint واحد و پاسخ‌های متغیر، چالش بیشتری دارد و به استراتژی‌های پیشرفته‌تر نیاز دارد. در همین راستا GraphQl با توجه به توضیحاتی که داده شد می‌تواند بهترین گزینه برای یاری رساندن به شما در پروژه‌های تجاریتان باشد و مسیر همواری را برای تیم شما و تیم‌های دیگر همروند شما ارائه دهد.

GraphQL یک زبان پرس‌وجو برای API‌ها است که توسط فیسبوک در سال 2015 معرفی شد. هدف اصلی GraphQL، فراهم کردن روشی کارآمدتر و انعطاف‌پذیرتر برای ارتباط بین کلاینت و سرور است. برخلاف REST که از چندین endpoint استفاده می‌کند، GraphQL تنها از یک endpoint استفاده می‌کند و به کلاینت اجازه می‌دهد که دقیقاً داده‌های مورد نیاز خود را درخواست کند. با رشد سریع توسعه وب و نیاز به ارائه داده‌ها به شیوه‌ای کارآمد، انتخاب معماری مناسب برای API‌ها به یکی از مهم‌ترین چالش‌های توسعه‌دهندگان تبدیل شده است. REST API و GraphQL دو معماری محبوب هستند که هر کدام مزایا و معایب خود را دارند. در این مقاله، به مقایسه عمیق GraphQL و REST API پرداخته و بررسی خواهیم کرد که کدام یک برای پروژه بعدی شما بهتر است.

مستندات باید واضح و دقیق باشند و نمونه‌های روشن و کاربردی شامل شوند. برای این کار، می‌توانید از پلاگین WPGraphQL for Advanced Custom Fields استفاده کنید. پس از نصب این افزونه، تمامی فیلدهای سفارشی که با ACF ایجاد شده‌اند، از طریق GraphQL نیز در دسترس خواهند بود. یکی از قابلیت‌های جالب GraphQL این است که می‌توانید آن را با سایر ابزارهای وردپرس ترکیب کنید. به‌عنوان مثال، اگر از Advanced Custom Fields (ACF) استفاده می‌کنید، می‌توانید با استفاده از WPGraphQL داده‌های ACF را نیز واکشی کنید.

این ویژگی باعث می‌شود برنامه‌ها انعطاف بیشتری داشته باشند و از بازگشت داده‌های غیرضروری جلوگیری شود. GraphQL، یکی از پیشرفته‌ترین فناوری‌های ارتباط بین کلاینت و سرور، به توسعه‌دهندگان این امکان را می‌دهد تا با سرعت و دقت بیشتری پروژه‌های خود را به پیش ببرند. این زبان پرس‌وجوی نوآورانه که توسط فیسبوک معرفی شده است، به دلایلی مثل کاهش بار اضافی داده‌ها و بهبود کارایی، به سرعت جایگاه ویژه‌ای در میان توسعه‌دهندگان پیدا کرده است. این تنظیمات یک نمونه ساده از تنظیمات مربوط به این پلاگین است اما پروژه ما به شکلی است که باید آن را به شکل متفاوتی پیکربندی کنیم. همچنین ما از تایپ اسکریپت استفاده می کنیم اما مثال بالا با جاوا اسکریپت است (مثلا دستورات require باید به import تبدیل شوند). من به عنوان تمرین از شما می خواهم توضیحات connect-redis را مطالعه کنید و بر اساس آن session و کوکی را برای پروژه ما ایجاد کنید.

ابتدا یک title را به عنوان آرگومان دریافت کرده ایم و سپس با متد create آن را در پایگاه داده ثبت می کنیم. برای اینکه این مسئله را به شما نشان بدهم، ابتدا در پوشه resolvers یک فایل دیگر به نام post.ts بسازید. در صورتی که پایگاه داده شما رمز و حساب کاربری خاصی دارد حتما آن ها را در همین شیء پاس داده شده به ()init تعریف کنید. را در همان پوشه codebase ایجاد کنید و عبارت node_modules را در آن قرار بدهید. در GraphQL، شما می‌توانید از کوئری‌ها (Queries) برای درخواست داده‌ها و از Mutation‌ها برای تغییر داده‌ها استفاده کنید. کوئری‌ها به شما اجازه می‌دهند تا داده‌های مورد نیاز خود را از سرور بگیرید و Mutation‌ها برای اعمال تغییرات مانند اضافه کردن یا به‌روزرسانی داده‌ها استفاده می‌شوند.


https://seohacker.academy/product/seo-course-gray-hat-mastering/