همه چیز درباره‌ی GraphQl:

کتابخانه گراف کیو ال ( GraphQL ) باعث می‌شود که rest-controller به همراه API های متنوع از بین رفته و تنها یک API مرجع به آدرس : http://[server-url]:[port]/graphql در سمت کد سرور باقی بماند. تمامی درخواست ها توسط RequestBody به همراه متد POST به آدرس بالا ارسال شده و با توجه به Body فرستاده شده، متد های مختلف صدا زده می‌شوند. با استفاده از این کتابخانه ، مدل Response درون Body فرستاده شده و در نتیجه نیاز به تعریف مدل های مختلف Response در کد وجود ندارد .

دو نوع ارسال اطلاعات در Body وجود دارد:

1. Query : درخواست‌هایی که کاربر برای دریافت اطلاعات به سرور می‌فرستد ( مشابه متد های GET ).
2. Mutation : درخواست‌هایی که کاربر برای ایجاد، ویرایش و حذف اطلاعات به سرور می‌فرستد ( مشابه POST, PUT, DELETE ).

برای هر Domain، در حقیقت به جای Rest-controller دو کلاس برای مدیریت Query و Mutation در نظر گرفته می‌شود. در حقیقت برای فهم بیشتر اگر بخواهیم با مدل MVC تطابق دهیم ترتیب لایه ها به این صورت است:

  1. Repository
  2. Service
  3. Query/Mutation

پس از تعریف متد های مختلف در کلاس های Query و Mutation، نیاز به معرفی آنها به گراف کیو ال ( GraphQL ) داریم. مطابق کد زیر، درون پوشه Resources داخل Graphql و در فایل schema.graphqls به تعریف انواع مختلف Domain، انواع مدل‌های Request، انواع متدهای Query و انواع متدهای Mutation می‌پردازیم. فیلدهای مختلف و جنس آن‌ها و آرگومان‌های مورد نیاز هر متد و جنس آن‌ها نیز در این فایل ذکر می‌شود . لازم به ذکر است که وجود علامت <!> جلوی هر فیلد به منظور NotNull بودن آن فیلد است. پس از انجام این کار، پروژه قابل اجرا بوده و متدهای مختلف توسط فیلدهای معرفی شده قابل استفاده خواهند بود.

مثال نحوه ارسال درخواست :

  •  درخواست Query زیر جهت دریافت User توسط شناسه (ID) آن و نمایش نام، شناسه و نقش‌های او است :

graphOL

 

  • پاسخ:

graphql

  • برای فرستادن درخواست Mutation برای ایجاد یک کاربر و تعیین نقش او است، ولی تنها نمایش نام و آی-دی کاربر پس از ایجاد در پاسخ:

graphql

  • پاسخ:

graphql

برای بررسی پروژه نمونه Graphql می‌توانید از طریق لینک زیر به گیت هاب من متصل شوید:

https://github.com/arsalanmrz/Graphql-spring-boot-sample

 

ارسال دیدگاه

6 + 4 =

این جا قراره با هم زبان برنامه نویسی جاوا رو یاد بگیریم. اگه جواب سوالتو توی مقاله ها پیدا نکردی، میتونی بهم ایمیل بزنی تا راهنماییت کنم. اگر موضوعاتی رو پیشنهاد داری حتما برام بفرست. منتظر ایمیلتم

پیام با موفقیت ثبت شد.
خطایی رخ داده است.