با توجه به این که اتصال به سرور در اندروید استدیو و جاوا با استفاده از کتاب خانه های متعددی انجام میشود دست شما برای استفاده از انواع api باز است.
تا زمانی که این ارتباط با سرور از راه url و دریافت یک فایل json باشد شما میتوانید از انواع ختلف روش ها برای پارس کردن دیتا استفاده کنید.
شما میتوانید از کتابخانههای معروفی مثل volley , retrofit , okhttp ,و... که در این مورد تنوع خوبی دارند استفاده کنید.
ولی اگر قرار باشد از graphql استفاده کنیم و بجای url از query برای ارسال درخواست استفاده کنیم کتابخانه معروف volley با وجود اینکه توسط خود گوگل توسعه داده میشود قابل استفاده نخواهد بود و دیگر کتابخانه ها هم برای ارتباط با سرور نیاز به استفاده از کتابخانهای apolloqraphql دارند .
کتابخانه apollographql به این شکل کار میکند :
یک درخواست از طریق url ارسال میکند در این درخواست فایل query و baseurl وجود دارد respance این درخواست توسط خودکتابخانه تبدیل به یک فایل schema.qraphqls میشود در این فایل پیش نیازهای ایجاد یک model برای query ساخته میشوند.
بعد از اینکه فایل schema ساخته شد باید یکبار برنامه را run کنیم تا فایل model ساخته شود و بعد از آن قادر خواهیم بود تا با کتابخانه retrofit و okhttp فایل json دریافت شده را پردازش کنیم.
اما برای اینکه به این مرحله برسیم باید چه کارهایی را انجام دهیم :
1- اضافه کردن این دو خط به bependencies سطح module
implementation "com.apollographql.apollo3:apollo-runtime:3.0.0"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.4.0"
2- اضافه کردن این کد به آخر فایل gradle سطح module
apollo {
packageName.set("com.example.app")
}
3- اضافه کردن این کد به قسمت اول فایل gradle سطح module
id 'com.apollographql.apollo3' version '3.0.0'
4- بعد از sync کردن پروژه در صورتی که java در سیستم شما به درستی نصب شده باشد خطای نخواهید داشت در غیر این صورت باید آدرس JAVA_HOME را ست کنید تا خطای syns برطرف شود.
5- یک کامند به شکل زیر بسازید و در قسمت terminal پروژه آن را اجرا کنید
./gradlew :app:downloadApolloSchema --endpoint='https://example.com/graphql/' --schema=`pwd`/app/src/main/graphql/com/example/app/schema.graphqls --header="Authorization: Bearer <Token>"
6- پروژه را از حالت اندروید در حالت پروژه قرار دهید در فایل main یک فایل به نام qraphql خواهید داشت داخل این فایل یک فایل از نوع graphql با نام دلخواه ایجاد کنید و داخل این فایل query خودتان را قرار دهید.
query BasketQuery{
baskets: BasketQuery{
id
productSku{
id
product_id
code
values
price
discounted_price
discount_started_at
discount_expired_at
quantity
weight
sell_count
order_count
created_at
updated_at
updated_status
}
}
}
یک نام برای query قرار میدهیم و یک نام مستعار برای نام گذاری که در آن از حروف بزگ استفاده نشده باشد.
7- با استفاده از کد زیر یک لاگ از خروجی بگیرید شما یک فایل json خواهد داشت که میتوانید آن را با استفاده از retrofit و okhttp هندل کنید.
اگر تا این مرحله با خطای مواجه شدید در میان بگذارید