جستجو برای:
سبد خرید 0
  • خانه
  • دوره های آموزشی
    • دوره های حضوری و آنلاین
      • دوره جامع برنامه نویسی اندروید
      • دوره جامع برنامه نویسی فلاتر
      • دوره برنامه نویسی React Native
      • دوره آموزشی برنامه نویسی iOS
    • دوره های متخصص و حرفه ای
      • دوره متخصص اندروید (پروژه محور)
      • دوره متخصص فلاتر (پروژه محور)
      • دوره آموزش امنیت در اندروید
      • دوره درآمدزایی دلاری از گوگل پلی در ایران
  • آموزش رایگان
    • دوره رایگان اندروید
    • دوره رایگان فلاتر
  • مشاورهجدید
  • دوره VIP
  • وبلاگ
ورود
گذرواژه خود را فراموش کرده اید؟
عضویت

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

ارسال مجدد کد یکبار مصرف (00:60)
  • 02171058559
  • info@amooznegar.com
  • لیست علاقه مندی ها
آکادمی آموزنگار
  • خانه
  • دوره های آموزشی
    • دوره های حضوری و آنلاین
      • دوره جامع برنامه نویسی اندروید
      • دوره جامع برنامه نویسی فلاتر
      • دوره برنامه نویسی React Native
      • دوره آموزشی برنامه نویسی iOS
    • دوره های متخصص و حرفه ای
      • دوره متخصص اندروید (پروژه محور)
      • دوره متخصص فلاتر (پروژه محور)
      • دوره آموزش امنیت در اندروید
      • دوره درآمدزایی دلاری از گوگل پلی در ایران
  • آموزش رایگان
    • دوره رایگان اندروید
    • دوره رایگان فلاتر
  • مشاورهجدید
  • دوره VIP
  • وبلاگ
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

وبلاگ

آکادمی آموزنگار > اخبار > برنامه نویسی > اندروید > آموزش استفاده از Retrofit 2 به عنوان REST client

آموزش استفاده از Retrofit 2 به عنوان REST client

1399-05-02
ارسال شده توسط آموزنگار
اندروید
آموزش استفاده از Retrofit 2

Retrofit یا به فارسی رتروفیت محصول تیم Square یکی از کتابخانه های مشهور و بسیار کاربردی در پیاده سازی اپلیکیشن های اندروید و جاوا میباشد که قصد دارند با سمت سرور در ارتباط باشند. بدین صورت Retrofit برای درخواست های HTTP  از OkHttp استفاده می کند .در این مقاله قصد داریم نحوه استفاده از Retrofit 2.x  به عنوان REST client امن را توضیح دهیم. با ما همراه باشید.

کتابخانه های وب سرویسی در اندروید

در اندروید بجز Retrofit کتابخانه های  دیگری بجز Retrofit نیز برای مدیریت درخواست HTTP وجود دارند مانند Volley . هر کدام از این کتابخانه ها مزایا و معایب خود را دارند.در این قسمت میخواهیم مزایا و معایب هر کدام از این کتابخانه ها را بررسی کنیم.

مزایا و معایب  Volley نسبت به Retrofit

  • Volley توسط مهندسان گوگل توسعه داده شده است
  • سرعت درخواست ها در Volley  کمتر Retrofit می باشد.
  • پیکربندی Retrofit ساده تر از Volley میباشد
  • تبدیل اتوماتیک اطلاعات برگشتی  به Object ها در Retrofit
مزایا و معایب  Volley نسبت به Retrofit

Retrofit چیست؟

Retrofit یک REST client برای جاوا و اندروید است. Retrofit  بازیابی و آپلود JSON (یا سایر داده های ساخت یافته) از طریق وب سرویس مبتنی بر REST را آسان می کند.  در Retrofit شما مشخص می کنید که کدام مبدل برای سریال سازی داده ها استفاده شود.  معمولا برای ساختار  JSON از GSON استفاده می شود ولی شما می توانید مبدل های دلخواه را برای پردازش XML یا پروتکل های دیگر اضافه کنید.  Retrofit برای درخواست HTTP از کتابخانه OKHttp استفاده می کند.

JSON چیست؟

JSON کوتاه‌شده‌ی عبارت «Javascript Object Notation» به معنی «نشان‌گذاری شیء جاوااسکریپت» است. JSON شیوه‌ای است که با کمک آن اشیا و اطلاعات برنامه‌نویسی به متن قابل پردازش توسط رایانه و قابل فهم برای انسان تبدیل می‌شوند.
نکته‌ مهم در این شیوه قابلیت فهم آسان توسط انسان است که در دیگر شیوه‌ها مانند XML کمتر به آن توجه شده است.
همان گونه که از نام JSON مشخص است، جاوااسکریپت به صورت پیش‌فرض می‌تواند رشته‌های JSON را پردازش و آن‌ها را ایجاد کند. افزون بر جاوااسکریپت، تقریبا تمام زبان‌های برنامه نویسی متداول با کمک کتابخانه‌های جانبی از JSON پشتیبانی می‌کنند.

نمونه JSON

برای ساخت عبارت‌های JSON چند قانون ساده وجود دارد که به کوتاهی آن‌ها را مرور می‌کنیم:

  • عبارت‌های JSON باید میان آکولاد «{}» قرار بگیرند.
  • اعضای شیء با علامت ویرگول«,» از هم جدا می‌شوند
  • برای تعریف یک عضو در یک شیء JSON، ابتدا «نام عضو» سپس دونقطه«:» و در پایان «مقدار» نوشته می‌شود
  • مقدار می‌تواند یکی از انواع «عدد»، «رشته»، «بولی»، «آرایه»، «شیء» و «نال» را بپذیرد. سایر انواع داده باید به صورتی دیگر ذخیره شوند
  • انواع رشته‌ای باید داخل دو گیومه «”» قرار بگیرند
  • بسته به زبان مبدا و مقصد انواع داده‌ی دیگری نیز ممکن است قابل پذیرش باشند
پنج گام ساده برنامه نویسی اندروید برای تازه کارها!
خواندن این مقاله
قدرت گرفته از افزونه نوشته‌های مرتبط هوشمند

استفاده از Retrofit

برای استفاده از Retrofit به سه کلاس زیر نیاز دارید:

  • کلاس Model که به عنوان یک مدل JSON استفاده می شود.
  • اینترفیس هایی که عملیات HTTP را تعریف می کنند.
  • کلاس Builder – نمونه ای که از رابط کاربری و API Builder استفاده می کند تا بتواند نقطه پایان URL را برای عملیات HTTP مشخص کند.

هر روش از یک اینترفیس, یک فراخوانی API را نشان می دهد. برای مشخص کردن نوع درخواست و نشانی URL نسبی باید HTTP annotation (GET, POSTو …) را بنویسید.  مقدار بازگشتی را به شی صدا زننده برگشت می دهد.

@GET("users")
Call<List<User>> getUsers();

برای تنظیم URL شما می توانید از بلوک های جایگزین و پارامترهای کوئری استفاده کنید. یک بلوک جایگزین یک {} به URL مربوطه اضافه می کند. با استفاده از @Path می توانید پارامتر متد را به بلوک جایگزین خاصی محدود کنید.

@GET("users/{name}/commits")
Call<List<Commit>> getCommitsByName(@Path("name") String name); 

پارامترهای کوئری با @Query در پارامتر متد اضافه می شود. آن ها به طور خودکار در پایان URL اضافه می شوند.

@GET("users")
Call<User> getUserById(@Query("id") Integer id);

@Body در یک پارامتر متد به رتروفیت می گوید از این شی به عنوان بدنه درخواست صدا زننده استفاده کند.

@POST("users")
Call<User postUser(@Body User user)

پیش نیازهای Retrofit

برای استفاده و پیاده سازی کتابخانه Retrofit در اندروید میبایستی ابتدا Dependency ها  Retrofit را در فایل build.gradle قرار دهید

Dependenciesهای زیر را به فایل build.gradle خود اضافه کنید.

// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
 
// Junit
testImplementation("org.junit.jupiter:junit-jupiter-api:5.0.0")
testRuntime("org.junit.jupiter:junit-jupiter-engine:5.0.0")
// to run JUnit 3/4 tests:
testImplementation("junit:junit:4.12")
testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0")

ایجاد مدل

برای اینکه اطلاعات دریافتی توسط کتابخانه های Json Parser کتابخانه Retrofit بتوانند رشته دریافتی Json را تبدیل به Object کنند میبایستی مدلی از نمونه رشته دریافتی را ایجاد کنید

public class Applications {
@SerializedName("id")
@Expose
private String id;
@SerializedName("cat_id")
@Expose
private String catId;
@SerializedName("title")
@Expose
private String title;
@SerializedName("icon")
@Expose
private String icon;
@SerializedName("packageName")
@Expose
private String packageName;
@SerializedName("versionCode")
@Expose
private String versionCode;
@SerializedName("versionName")
@Expose
private String versionName;
@SerializedName("shortDescription")
@Expose
private String shortDescription;
@SerializedName("fullDescription")
@Expose
private String fullDescription;
@SerializedName("price")
@Expose
private String price;
@SerializedName("rate")
@Expose
private String rate;
@SerializedName("downloadLink")
@Expose
private String downloadLink;
@SerializedName("number_installs")
@Expose
private String numberInstalls;
@SerializedName("minSDK")
@Expose
private String minSDK;
@SerializedName("developer")
@Expose
private String developer;
@SerializedName("bulk")
@Expose
private String bulk;
 
public String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
 
public String getCatId() {
return catId;
}
 
public void setCatId(String catId) {
this.catId = catId;
}
 
public String getTitle() {
return title;
}
 
public void setTitle(String title) {
this.title = title;
}
 
public String getIcon() {
return icon;
}
 
public void setIcon(String icon) {
this.icon = icon;
}
 
public String getPackageName() {
return packageName;
}
 
public void setPackageName(String packageName) {
this.packageName = packageName;
}
 
public String getVersionCode() {
return versionCode;
}
 
public void setVersionCode(String versionCode) {
this.versionCode = versionCode;
}
 
public String getVersionName() {
return versionName;
}
 
public void setVersionName(String versionName) {
this.versionName = versionName;
}
 
public String getShortDescription() {
return shortDescription;
}
 
public void setShortDescription(String shortDescription) {
this.shortDescription = shortDescription;
}
 
public String getFullDescription() {
return fullDescription;
}
 
public void setFullDescription(String fullDescription) {
this.fullDescription = fullDescription;
}
 
public String getPrice() {
return price;
}
 
public void setPrice(String price) {
this.price = price;
}
 
public String getRate() {
return rate;
}
 
public void setRate(String rate) {
this.rate = rate;
}
 
public String getDownloadLink() {
return downloadLink;
}
 
public void setDownloadLink(String downloadLink) {
this.downloadLink = downloadLink;
}
 
public String getNumberInstalls() {
return numberInstalls;
}
 
public void setNumberInstalls(String numberInstalls) {
this.numberInstalls = numberInstalls;
}
 
public String getMinSDK() {
return minSDK;
}
 
public void setMinSDK(String minSDK) {
this.minSDK = minSDK;
}
 
public String getDeveloper() {
return developer;
}
 
public void setDeveloper(String developer) {
this.developer = developer;
}
 
public String getBulk() {
return bulk;
}
 
public void setBulk(String bulk) {
this.bulk = bulk;
}
}

ایجاد کلاس ApiClient

هدف از ایجاد کلاس ApiClient ایجاد یک شی کلی برای Retrofit بصورت زیر میباشد

  • ایجاد یک شی از کلاس Retrofit برای اینکه فقط یکبار در سراسر پروژه مقداردهی شود
  • اتصال آدرس Base وب سرویس برای Retrofit
  • وصل کردن کتابخانه های Json Convertor برای Parse کردن رشته JSON
public class APIClient {
 
    private static Retrofit retrofit;
    private final static String BaseURL = http://androidsupport.ir/market/";
 
    public static Retrofit getRetrofit() {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder().baseUrl(BaseURL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
 

ایجاد سرویس Interface

در کتابخانه Retrofit برای صدا زدن فانکشن های وب سرویسی میبایست متدهای هر وب سرویس را بطور کامل پیاده سازی کرد

public interface IService {
 
  @GET("getBestApplications.php")
    Call<List<Applications>> showAllApps();
 
}

صدا زدن وب سرویس های Retrofit

آخرین قسمت برای صدا زدن وب سرویسی  متدهایی میباشد که در داخل کلاس IService نوشته شده است

public class MainActivity extends AppCompatActivity {
 
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
  IService   iService = APIClient.getRetrofit().create(IService.class);
 
 Call<List<Application>> call = iService.showAllApps();
 
        call.enqueue(new Callback<List<Application>>() {
            @Override
            public void onResponse(Call<List<Application>> call, Response<List<Application>> response) {
            
            }
 
            @Override
            public void onFailure(<List<Application>> call, Throwable t) {
                 
            }
        });
 
    }
  
 
}

مجوز ها

برای صدا زدن وب سرویس ها چون نیاز به استفاده از اینترنت میباشد حتما میبایستی مجوز Internet قرار داده شود

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ir.androidlearn.retrofit">
  
    <uses-permission android:name="android.permission.INTERNET" />
  
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
  
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
  
</manifest>

نتیحه گیری :

ORM های برتر برنامه نویسی اندروید
خواندن این مقاله
قدرت گرفته از افزونه نوشته‌های مرتبط هوشمند

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

قبلی ویژگی های برتر اندروید 11 از نظر برنامه نویس ها
بعدی خداحافظی با findViewById در اندروید

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • GoLang
  • jetpack compose
  • PHP
  • اپلیکیشن
  • امنیت
  • اندروید
  • اوپن سورس
  • برنامه نویسی
  • برنامه نویسی iOS
  • برنامه نویسی react native
  • پادکست صوتی
  • تکنولوژی
  • جاوا
  • طراح رابط کاربری
  • طراحی رابط کاربری
  • طراحی وب
  • عمومی
  • فریلنسر
  • فلاتر
  • فناوری
  • کاتلین
  • کتاب های آموزشی
  • کسب و کار
  • هوش مصنوعی
  • وردپرس
برچسب‌ها
admob coroutine dagger dagger-hilt jetpack nft rxandroid rxjava spring swift ارز دیجیتال امنیت در اندروید دارت فایربیس فوشیا مصاحبه کاری معماری mvi نقشه راه برنامه نویسی کاتلین گوگل

آکادمی آموزنگار، جایی برای آغاز یک سفر شگفت‌انگیز در دنیای برنامه‌نویسی است. آموزنگار تلاش می‌کند تا هر فردی را از هر سطحی از زندگی و تجربه به دنیای جذاب برنامه‌نویسی وارد کند.

دسترسی سریع
  • درباره ما
  • تماس با ما
  • حریم خصوصی
  • سوالات متداول
نمادها
شبکه های اجتماعی
Facebook Twitter Youtube icon--white Whatsapp

تهران، ازگل ، مجتمع تجاری الماس ایرانیان، پارک علم و فناوری فردا

021-71058559

تمامی حقوق برای آکادمی آموزنگار محفوظ می باشد

اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://amooznegar.com/?p=10925
ورود
استفاده از شماره تلفن
استفاده از آدرس ایمیل
آیا هنوز عضو نشده اید؟ ثبت نام کنید
بازیابی رمز عبور
استفاده از شماره تلفن
استفاده از آدرس ایمیل
ثبت نام
استفاده از شماره تلفن
استفاده از ایمیل
قبلا عضو شده اید؟ ورود به سیستم
محافظت توسط   
مرورگر شما از HTML5 پشتیبانی نمی کند.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند.

آموزنگار

آکادمی آموزنگار

  • 021-71058559
  • شنبه تا چهارشنبه از ساعت 8 تا 17
  • info@amooznegar.com