تجربه ی کار با Github API ‌; تسک جذابی بود !


تجربه ی کار با Github API ‌;  تسک جذابی بود !
تجربه ی کار با Github API ‌; تسک جذابی بود !


چند روز پیش تسکی به من داده شد که سناریو ایی مبتنی کار با API گیت هاب بود . خیلی برام جالب اومد بخاطر اینکه تا بحال ازش استفاده نکرده بودم و میخواستم بدونم چطور میشه و داکیومنت های زیادی هم براش پیدا نکردم تنها این لینک که لیست API ها رو میداد و توضیحات مختصری هم داره .

سناریوی تسک از من فقط گرفتن اطلاعات هر یوزر بر اساس یوزرنیم اشو میخواست که فقط همین رو پیاده کردم (این روزها وقتم کمه) که اگر وقت کنم موارد دیگری رو اضافه میکنم ولی دوست دارم که شما توسعه بدید و البته بگم Authorizing OAuth رو هم در یک اپلیکیشن تستی دیگه ایی نوشتم که بعدا این رو هم اضافه میکنم !

خب بریم سراغ داستان سنا و گیت هاب :)

API : https://api.github.com/users/{username}

خب اول اینکه من نیاز به dependencies های مختلفی داشتم که لیست اشو این زیر مینویسم :

Navigation Component -> برای نوگیشن بین فرگمنت ها و پیاده کردن اپلیکیشن بر اساس سینگل اکتیویتی
Lifecycle -> برای استفاده از ViewModel , LiveData
Coroutines -> برای هندل کردن Multi Threading
Retrofit -> ارتباط با سرور و گرفتن اطلاعا ت از وب سرویس
Gson -> برای parse JSON
Glide -> برای لود کردن تصویر
Koin - > برای DI


در ادامه مختصر توضیحاتی رو میدم ولی برای اطلاعات بیشتر به پروژه در گیت هاب مراجعه کنید.

چون طبق معماری MVVM پیش میرفتم اولین کاری که کردم ایجاد یک کلاس دیتا مدل بود که اسمش در پروژه User هست و اطلاعاتی که میخواستم درش قرار دادم .

گام بعدی تشکیل اینترفیس برای ارتباط با سرور بود که اسمش ApiService هست در اینجا من اون end point ‌ایی که برای Api ام بود (/users/{username}) رو توسط GET صدا میزنم . نکته ایی که داره این هست که این username همون چیزی هست که ما باید توسط @Path به سرور بفرستیم و پاسخ بگیریم و در کلاس RetrofitClient باید از رتروفیت یک builder بسازیم و اونو ایجاد کنیم که کدهاشو میتونید ببنید.

مرحله بعدی ایجاد یک Repository هست که باید از همین کلاسی که ساختیم و همچنین کلاس مدلمون استفاده کنه و متغیرهایی رو به کلاس ویومادل امون پاس بده . و دقت کنید که این کلاس بر اساس Singleton pattern هست برای همین از Object استفاده کردم و اینکه استفاده از LiveData و CoroutineScope هم فراموش نکردم .

خب میرسیم به ViewModel پس به کلاس MainViewModel در پروژه مراجعه کنید . در اینجا با استفاده از MutableLiveData متغیرهایی رو میسازیم که برای پاس دادن به View آماده کردیم .

مرحله ی آخر استفاده از اطلاعات ViewModel در فرگمنت HomeFragment هست (view داستان ما) که با Observe کردن ویو مادل اطلاعات رو میگیریم و استفاده میکنیم .

خب تمام شد . میتونید با مراجعه به لیست API ‌ها مواری مثل لیست Repoes ها رو بگیرید که حتما اضافش میکنم .

آپدیت : لیست ریپوزیتوری ها رو هم اضافه کردم .

API : https://api.github.com/users/{username}/repos

پی نوشت : لطفا به متن کامیت هام دقت نکنید :دی

امیدوارم به کارتون بیاد و بتونید ازش استفاده کنید . اگر هر تجربه ی مشابهی داشتید در این رابطه خوشجال میشم با من و دیگران در میان بگذارید .

موفق و سربلند باشید !

سنا عبادی | 19:13 شب 17 آذر سال 1398