به نام خدا،در ادامه مبحث مربوط به برنامه نویسی شبکه در اندروید امروز میخواهیم با دسترسی ب Api های REST آشنا شویم. REST که مخفف Representational State Transfer میباشد یک معماری وب سرویس است که از HTTP برای انتقال اطلاعات میان کلاینت و سرور استفاده میکند کار کردن با REST بسیار ساده تر از وب سرویس های پیچیده ای مانند SOAP میباشد. یک سرویس به اصطلاح RESTful عموما بر روی پروتکل HTTP و تمام افعال استاندارد این پروتکل را که توسط مرورگرهای وب قابل درک هستند کار میکند مانند (GET, POST, PUT, DELETE).

از لحاظ رویکرد برنامه نویسی REST جایگزینی ساده برای سرویسهای وب است. توسعهپذیری در تعاملات میان اجزا، عمومیت واسط ها، توسعه مستقل اجزا و استفاده از واسطه ها از کلیدی ترین اهداف معماری REST میباشد و همچنین استفاده از معماری REST در برنامهنویسی کارایی، سادگی، انعطافپذیری، امکان مشاهده و نظارت، قابلیت حمل و قابلیت اطمینان را افزایش می دهد.
یک وب سرویس REST دارای مشخصات زیر است:
بوسیله URI کار میکند یعنی ریسورس ها و کالکشن های خود را به صورت http://example.com/resources دریافت میکند اطلاعات را به صورت عموما JSON دریافت میکند البته میتواند اطلاعات به صورت XML هم برگردانده شود برخلاف وب سرویس های برپایه SOAP هیچ استاندارد رسمی برای وب سرویس های REST وجود ندارد به دلیل اینکه REST یک معماری است در حالی که SOAP یک پروتکل وب سرویس است.
برای دریافت و ارسال از طریق http روی شبکه ، اندروید دو راه فراهم کرده است : http client اپاچی :http urlconnection جاوا. نکته ی اصلی برای انتخاب هریک از دو راه ، نسخه ی اندرویدی است که اپلیکیشن شما از ان پشتیبانی می کند.
(API سطح 3)
اگر قرار است اپلیکیشن شما برای نسخه های پایین اندروید باشد ، از کلاس های http اپاچی در یک async task استفاده کنید. اندروید شامل کتابخانه ی کامپوننت های http اپاچی است، که می توان از ان ها برای اتصال به api ها remote استفاده کرد. در این کتابخانه کلاس هایی برای ساخت در خواست هایی، get، post، put، delete وجود دارد :هم چنین پشتیبانی از {ssl {layer secure sockets ، حافظه ی cookie و سایر در خواست هایی که ممکن است http client در خود داشته باشد را کنترل می کند.مزیت دیگری که استفاده از این شیوه دارد ، سطح انتزاعی بودن عملیات در این کتابخانه است. در بیشتر مواقع برای انجام بسیاری از کارهای شبکه ، تنها به کد کوچکی نیاز است . بخش اعظمی از کدهای سطح پایین لازم جهت انجام کار ، بر عهده توسعه دهنده نیست و کتابخانه به ان ها رسیدگی می کند
اما کتابخانه و روش مذکور ، یک عیب بزرگی دارد . نسخه ای از کامپوننت های اپاچی که در اندروید قرار داده شده است ، شامل multi partentity نمی شود. این کلاس برای عملیات باینری یا فرم های چند بخش در درخواست های post ، ضروری است . اگر در اپلیکیشن به این کلاس نیاز دارید و مصر به استفاده از http client هستید ، باید یک نسخه ی جدید تر از کتابخانه کامپوننت ها را به عنوان یک jar خارجی به پروژه وارد کنید ..
(API سطح 9)
از کلاس http urlconnection درون یک async task استفاده کنید. این کلاس از نخستین فریم ورک اندروید ، api سطح 1 ، بخشی از ان بوده است اما از اندروید 2.3 به عنوان راه پیشنهادی برای عملیات i/o شبکه معرفی شد. دلیل ان نیز وجود برخی اشکالات جزیی در پیاده سازی بود که در نتیجه http client را انتخاب مناسب تری قلمداد می کرد . در هر صورت با گذشت زمان ، تیم اندروید تغییرات و تحولات مثبتی در http url connection ایجاد کردند که اکنون می توان از ان با اسودگی خاطر و به عنوان پیاده سازی پیشنهادی استفاده کرد .بزرگترین مزیت http URL Connection ، کارایی ان است . کلاس های ان سبک هستند و نسخه های جدید اندرویدی امکاناتی از قبیل فشرده سازی را شامل می شوند. هم چنین api ان سطح پایین تر است که عمومیت استفاده از ان را افزایش می دهد و هر نوع تراکنش ممکن http را پیاده سازی می کند. شاید نکته منفی ان را بتوان نیاز به کد نویسی بیشتر از سوی توسعه دهنده بیان کرد.
در قسمت های آتی از این آموزش با http client,GET,post ,http urI connection آشنا خواهیم شد.
عناوین دوره های رایگان آموزشی کار با شبکه و ارتباطات در برنامه نویسی اندروید:
1.پاسخ به رویداد های WebVeiw
2.دسترسی به وب ویو با استفاده از جاوااسکریپت
3.دانلود و نمایش یک عکس از اینترنت
4.دانلود و نمایش بیش از یک عکس از اینترنت
5.دانلود و نمایش یک فایل متنی
6.دسترسی به API های REST
7.ترجمه عبارت های JSON
8.ترجمه XML
9.انتقال داده از طریق NFC
10.برنامه نویسی سوکت
11.ساخت برنامه هواشناسی