Web Devs
644 subscribers
218 photos
22 videos
17 files
233 links
Articles, News, Jokes, Quotes, Back-End and UI/UX for web developers.
Github : https://github.com/fullStackDevsGroup
Advertising: @adsfullStackDevs
Download Telegram
#FAQ
What is this ?

مجموعه ای کامل از سوالات مصاحبه ،‌ همراه با پاسخ و برخی از نکات کد که به شما کمک می کند تا برای مصاحبه های فنی آماده شوید . بسیاری از این سؤالات از مصاحبه های واقعی هستند و برای اکثرمفاهیم وب سوال وجود دارد

توجه داشته باشید که بسیاری از این سوالات باز هستند و می توانند منجر به بحث های جالبی شوند
مطالب مورد پوشش :‌
#JavaScript #React #VueJs #Angular #NodeJs #AngularJS #Bootstrap #CSS #HTML5 #Sass #Webpack #MongoDB #SQL #GraphQL #CSharp #Golang #Java #ASPNET #ASPNETMVC #NETFramework #Ruby #RubyOnRails #TypeScript #PHP #Android #RESTAPI #DataStructures #DesignPattern #Swift #Agile #Scrum



📌📌 لینک : https://goo.gl/KaMsmK
@fullStackDevs
#GraphQL
#ApiDesign


✳️ GraphQL

🔹 در این پست قراره با هم دیگه یک نگاهی به graphQl بندازیم و بدونیم که graphQl چی هست و چه کاربردی داره ؟

با یه جست و جوی ساده به این تعریف از graphQl میرسیم
🧩 GraphQL is a query language for APIs

▪️'گراف کیو ال یک زبان پرس و جو برای API هاست.

🔻 باید بدانید که GraphQL و REST هر دو API Design هستند .
یعنی رابطی کارآمد که به استفاده کنندگان API این امکان رو میده، علاوه بر استفاده از API امکان تعامل بهتری رو با اون داشته باشند.

مطمئنا با این تعاریف باز هم متوجه شدن اینکه graphQl چی هست، سخت و گیج کنندست. بیاین ساده تر به موضوع نگاه کنیم

🔸مهمترین تفاوت بین REST و GraphQl در جمع آوری داده هاست 🤔.

🔰 در یک اپلییکیشن واقعی همیشه با dataSet های بزرگ سر و کار داریم.
به عنوان مثل ' کاربری که مجموعه ای از پست ها رو داره ، پستی که مجموعه ای از کامنت ها و لایک ها رو داره '. برای دریافت این اطلاعات به کمک یک REST API چاره نیست، جز اینکه چندین بار به سرور درخواست بفرستیم و هر بار اطلاعاتی رو دریافت کنیم.
به عنوان مثال در یک درخواست اطلاعات کاربر رو دریافت کنیم و در درخواست بعدی اطلاعات مربوط به پست های کاربر و در درخواست بعدی اطلاعات مربوط به لایک های پست و ...

🔹به طور کل مزیت یک REST API در ساده نگه داشتن کارهاست. چون همیشه با یک API سرو کار داریم که فقط یک کار انجام میده. همین امر باعث میشه تا نگه داری و فهمیدنش رو ساده تر کنه.
علاوه بر اینها مشکلی که در دریافت داده ها از یک REST API وجود داره اینکه، نمیتوانیم بسته به نیازی که داریم داده های دریافتی رو مشخص کنیم و فقط اون دیتایی که لازم داریم رو از Endpoint دریافت کنیم. همیشه با یک Set کامل از داده سر و کار داریم. به عنوان مثال در یک صفحه فقط میخواهیم که نام کاربر را نمایش بدیم، وقتی که یک درخواست مبتنی بر دریافت اطلاعات کاربر به REST API میفرستیم،
در ریسپانس هم آدرس کاربر ، شماره تماس و ... سایر اطلاعات دیگر هم دریافت میشه در حالی که فقط به نام کابر برای نمایش نیاز داشتیم.
🔻این مشکل اصطلاحا over fetching گفته میشه.

❇️ بلاخره نوبت به graphQL رسید. grapthQL علاوه بر تمام تعاریفی که پیش از این گفتیم، یک سینتکس (syntax) برای چگونگی درخواست اطلاعات میباشد. و از آن برای دریافت اطلاعات از سرور به کلاینت استفاده میشه.

🔹 سه ویژگی اصلی graphQl :
🔻به کلاینت این اجازه رو میده تا فقط داده ای که نیاز داره رو مشخص کنه و فقط همون رو برای کلاینت باز میگردونه.
🔻جمع آوری داده هارو از dataSet ها و resource های مختلف بسیار آسون میکنه.
🔻و از type system برای توصیف داده ها استفاده میکنه.

🔸 در graphQl کلایت داده ای که نیاز داره رو درخواست میده و فقط و دقیقا همون رو دریافت میکنه.
به عنوان مثال کلایت یک graphQl query به سرور میفرسته و در query خودش در خواست نام کاربر رو میکنه ، در سمت سرور graphQl execution engine این کوئری رو دریافت میکنه و با پردازش اون یک json که فقط شامل دیتایی هست که کلاینت خواسته باز میگردونه.

🔹از مزایای دیگر graphQl، دریافت اطلاعات از چند resource فقط در یک درخواست، هست.
به عنوان مثال در یک graphQL query که کلاینت به سمت سرور فرستاده ، میتونه علاوه بر مشخصات کاربر، اطلاعات مرتبط با post ها و like های همون کاربر رو هم در همون در خواست دریافت کنه،
( به این خاطر که تمرکز graphQl بر رابطه بین آبجکت هاست).
کاری که برای انجام اون در REST API ها باید چندین درخواست به سرور میفرستادین.

🧩
تاریخچه graphQl به سال 2012 و فیسبوک برمیگرده، زمانی که فیسبوک برای Feed کردن اخبار ها در اپلیکیشن موبایلش به مشکل خورده بود.
پیاده سازی بخش News Feed در اپلیکیشن موبایل کار ساده ای نبود، اخبار ها شامل پستهایی بودند و هر پست کامنت ها و لایک هایی داشت و رابطه بینشون پیچیده ، سلسله مراتبی و به هم پیوتسه و بازگشتی بود.
و علاوه بر اینها َAPI ها طوری طراحی نشده بودند تا به توسعه دهنده ها این اجازه رو بدن تا چنین داده های بهم پیوسته رو نشون بدن و فقط داده هایی که لازم دارن را دریافت کنن.
در نتیجه این نقطه شروعی برای شکل گیری grapgQl بود.
🧩

برای استفاده از graphQl باید از لایبری های Client side و پکیج های Server Side استفاده کنین. زبانی های زیادی هستند که از GraphQl پشتیبانی میکنند لیستی از آونها رو در اینجا میتونید ببینید.

🔹در قسمت های بعدی به مقایسه graphQL و REST میپردازیم و از مزایا و معایب میگیم و اینکه کی باید از کدومشون استفاده کرد.

@FullStackDevs
#GraphQl Part2
#ApiDesign
❇️اجزای اصلی یک GaphQL کوئری
🔸Queries :
▪️یک کوئری درخواستی است که توسط کلاینت صورت میپزیرد.
🔸Resolvers :
▪️به بیان ساده یک Resolver، چگونگی fetch کردن داده ها و اینکه داده ها از از چه محلی باید آورده شوند، را انجام می دهد.در واقع resolver وظیفه آماده سازی و فراهم کردن دیتای متناظر با هر فیلد در درخواست داده شده را دارد.
🔸Schema :
▪️یک GraphQl Schema عملیاتی که کلایت بعد از متصل شدن به GraphQl میتواند انجام دهد را توصیف میکند. درون Schema مهترین ساختار type ها هستند.

🧩
توضیح کامل در مورد type های GraphQL ار در اینجا مطالعه نمایید.
🧩

🔰سوال 1 ؟ GraphQl بهتر است یا REST ؟؟

▪️سالهاست که REST به یک استاندارد برای طراحی Web Api ها تبدیل شده است.
مزایای استفاده از REST عبارتند از :
🔻Stateless servers
🔻Structured access to resources

و REST API ها در برابر تغییرات مورد نیاز کلاینت برای دسترسی به Resource ها به شدت انعطاف ناپذیر هستند.

▪️در مقابل GraphQl برای ایجاد چنین انعطاف پذیری که REST از آن برخوردار نبود توسعه داده شد و بسیاری از کم و کاستی هایی که توسعه دهندگان هنگام کار کردن با یک REST API ممکن است مواجه را برطرف میکند.


✳️معایب اصلی REST
🔸Underfetching :
▪️یکی از عمده ترین مشکلات REST میباشد هنگامی که تنها راه دریافت اطلاعات صدا زدن API میباشد و API فقط داده ای Structured و ثابت بازگشت میدهد و این امکان وجود ندارد تا بسته به نیاز کلاینت، ساختار داده بازگشتی تغیر کند.
🔸Overfetching :
▪️این مشکل به این معنی است که کلاینت در اکثر مواقع دیتایی بیشتر از آنچه که نیاز دارد، دریافت میکند.
🔸n+1 requests problem :
▪️این مشکل با نام
underfetching and the n+1-requests problem
شناخته میشود.
به طور کلی underfetching به این معنی است که یک endpoint خاص، دیتای مورد نیاز را بسته به درخواست کلاینت، نمی تواند فراهم کند و کلاینت باید برای دریافت دیتا مورد نیاز خود درخواست های متعدد ارسال کند.

🔰سوال 2 ؟ چه زمانی REST بهترین گزینه است؟
▪️در واقع یک REST API یک Concept برای اپلیکیشن های network-based میباشد و در مقابل GraphQl یک query language و مجموعه ای از ابزارهاست که برای انجام عملیات بروی یک endpoint از HTTP استفاده میکند.و علاوه بر اینها در چندین سال گذشته از REST برای ساخت API ها استفاده شده است در حالیکه GraphQL بروی بهبود عملکرد و بهینه سازی و انعطاف پذیری متمرکز است.

🔰سوال 3 ؟ بالاخره GraphQl را یاد بگیریم یا نه ؟

▪️در بین Company ها REST یک استاندارد در صنعت شناخته میشود و به عنوان یک معماری کامل پذیرفته شده است که کاربری چندین ساله دارد.
با اینکه GraphQl به اندازه REST در بین Company ها رایج نیست اما یاد گرفتن ان ارزشمند است و ارزش یادگیری آنرا دارد با automation شدن کارها زندگی آسانتر میشود در نتیجه برای ما که خالقین این automation ها هستیم سرعت و کارایی بهتر اپلیکیشن اهمیت ویژه ی دارد و تجربه کاربری بهتری را برای کاربر به ارمغان می اورد، اینجاست که بهبود عملکرد اپلیکیشن برگ برنده برنامه نویس محسوب میشود و این امر میسر نمیگردد مگر با استفاده از ابزار های مناسب خاص خود نظیر GraphQl.
@fullStackDevs
#RPC
#GraphQL
#REST
#SOAP

SOAP vs REST vs GraphQL vs RPC

API Architectural Styles Comparison

The diagram above illustrates the API timeline and API styles comparison.

Over time, different API architectural styles are released. Each of them has its own patterns of standardizing data exchange.

You can check out the use cases of each style in the diagram.

🔗 Source link

@fullStackDevs
👍32