واکنون ایزی گرام 3 | ایزی گرام 3 با کلی امکانات جدید منتشر شد | کلیک کنید

نحوه راه اندازی وب سرویس REST در اندروید

دسته‌بندی: آموزش
شهریور ۲۸, ۱۳۹۷

نحوه راه اندازی وب سرویس REST در اندروید

در این مقاله در رابطه با مباحث مرتبط با اتصال برنامه‌های اندروید به سرور قصد داریم شما را با یک  مفهوم بسیار پرکاربرد به اسم REST و به طور کلی وب سرویس REST در اندروید آشنا کنیم.

 

وب سرویس REST در اندروید

 

در ابتدا به بررسی معنای وب سرویس پرداخته و پس از آن با توضیح مختصری پیرامون وب سرویس REST در اندروید به بررسی انواع متدهای آن و روش کار با آن ها می پردازیم.

معنای وب سرویس چیست؟

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

 

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

 

قسمت سرور بعد از انجام محاسبات باید نتیجه را به برنامه بخش کلاینت ارسال نماید. این عمل مدت ها  یکی از مشکل ترین کارها در مهندسی نرم‌افزار بود .

 

امروزه در عصر وب به طور معمول برنامه سمت سرور یک برنامه وب بوده و سمت کلاینت یک برنامه در مرورگر وب است. مسیر تبادل اطلاعات پروتکل HTTP است و فرمت اطلاعات معمولاً XML یا JSON می باشد. از آنجایی که پروتکل HTTP نقش بسیار مهمی دارد، به این برنامه‌ها وب سرویس گفته می‌شود.

 

وب سرویس REST در اندروید

REST مخفف کلمات  Representational State Transfer به معنی انتقال وضعیت نیابتی می باشد. در برخی مواقع آن را ReST هم می‌نویسند. به نوعی یک شیوه برای پیاده سازی وب سرویس می باشد. برنامه‌هایی که در آن‌ها از REST استفاده شده باشد معمولاً RESTful می باشند.

 

در این قسمت می خواهیم با مثالی ساده REST را با SOAP که یکی دیگر از شیوه‌های پیاده‌سازی وب سرویس است مقایسه نماییم.

 

فرض ما بر این است که در سمت سرور برنامه‌ای در حال اجرا است. یکی از متدهای این برنامه نام یک کاربر را اخذ نموده و جزئیات آن را برای کلاینت ارسال می‌کند. با استفاده از وب سرویس SOAP درخواست ارسالی به سمت سرور تقریبا اینگونه است:

 

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:body pb="http://www.acme.com/phonebook">
<pb:GetUserDetails>
<pb:UserID>12345</pb:UserID>
</pb:GetUserDetails>
</soap:Body>
</soap:Envelope>

 

ما باید این XML را با یک درخواست HTTP POST به سرور بفرستیم.

حال ببینیم برای این کار در REST چه کار باید بکنیم:

 

http://www.acme.com/phonebook/UserDetails/12345

 

مشخص است که برای این کار لزومی ندارد یک  XML بسازیم و آن را HTTP POST به سمت سرور بفرستیم. در REST این کار فقط با یک URL  خیلی ساده قابل انجام است. این URL با متد HTTP GET به سمت سرور فرستاده می شود.

 

علت این که تمامی روش‌های استفاده از وب سرویس احتیاج به یک کتابخانه دارند این است که به وسیله ی این کتابخانه‌ها XML های مورد نیاز ساخته می شوند و به درخواست‌های ارسالی متصل می گردند و پاسخ‌های دریافت شده را  این کتابخانه‌ها تجزیه می کنند توسط برنامه سمت کلاینت به صورت با مفهوم مورد ترجمه قرار می گیرند.
با کمک REST تنها چیزی که مورد نیاز است یک اتصال HTTP به سرور خواهد بود. شما حتی می‌توانید API سرور را با کمک یک مرورگر تست نمایید.

همچنین ببینید :   ساماندهی و دسترسی به منابع اندروید

 

پیش از هر کار در حال حاضر زمان آن است که با انواع متدهای HTTP آشنا شده و کاربرد آن‌ها را در REST ببینیم.

متدهای HTTP وب سرویس REST در اندروید

هر یک از  درخواست های HTTP که به سمت سرور فرستاده می شود، دارای ویژگی ای  به نام متد است. به احتمال زیاد تا به اکنون در برنامه‌هایی که نوشته‌اید دو  متد پر کاربرد HTTP به نام های GET و POST  را دیده‌اید.

 

باید بدانید که HTTP متدهای دیگری هم دارد که در اینجا آن‌ها را معرفی می‌کنیم و قصد داریم با نقش آن ها در REST آشنا شویم.

 

GET
POST
PUT
DELETE

 

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

URL دریافت لیست محصول به این شکل است:

 

http://api.store.com/products

 

برای گرفتن جزئیات محصولی خاص درخواست ارسالی به این شکل است:

 

http://api.store.com/products/1234

 

۱۲۳۴ در این کد ID یا شناسه کالا می باشد.

در صورتی که در نظر داشته باشیم رکورد جدیدی در سرور ایجاد نماییم، برای مثال کاربر کامنت جدیدی برای محصول ارسال می کند،کافی است اطلاعات کامنت (کاربر، محصول، متن پیام و …) را به فرمت JSON یا XML با توجه به تنظیمات سرور، درآورده و آن را به بدنه (body)  ضمیمه نماییم و با استفاده از متد POST به سرور بفرستید:

 

http://api.store.com/new-product

 

در صورتی که قصد داشته باشیم محصولی  را از سرور حذف نماییم، کافی است مثل وقتی که جزئیات آن را می‌گرفتیم عمل کنیم ولی به جای متد GET از متد DELETE استفاده کنیم:

 

http://api.store.com/products/1234

 

در صورتی که قصد داشته باشیم محصولی  را در سرور ویرایش نماییم، کافی است مانند حالت ایجاد محصول جدید، یک JSON یا XML بسازیم و به بدنه (body) درخواست ضمیمه نماییم و درخواست را با متد PUT به سمت سرور بفرستیم.

 

شاید سوال این باشد که سرور چگونه تشخیص می‌دهد که مثلاً ما چه کار می‌خواهیم بکنیم؟

 

برنامه‌های سمت سرور  نوع درخواست‌های رسیده را بررسی می نمایند و بر اساس نوع آن و اطلاعات دریافتی کار مناسب را انجام می دهند. زبان تبادل اطلاعات بین سرور و کلاینت‌ها اختیاری است و می‌تواند JSON یا XML یا متن ساده (PLAIN TEXT) یا هر چیزی قرار گیرد.

 

بنابراین در صورتی که برنامه سمت سرور را شخصی غیر از شما نوشته به احتمال زیاد مستنداتی برای کار کردن با سرویس‌هایش نوشته است  و آن را باید به نحوی در اختیار شما قرار دهد.

امیدوارم از این آموزش لذت برده باشید.

 

 

پیام بگذارید


تومان