You are on page 1of 34

‫‪ REST‬چیست ؟‬

‫یک مدل معماری برای طرایح برنامه های کاربردی شبکه است‪.‬‬

‫ایده اصیل ‪:‬‬


‫ز‬
‫مکانیم های ‪ HTTP‬ساده به جای استفاده از معماری های پیچیده ای مانند‬ ‫ایده اصیل معماری ‪ REST‬استفاده از‬
‫‪ RPC , CROBA , SOAP‬است‪.‬‬

‫در معماری ‪ 6Rest‬قید وجود دارد‪:‬‬


‫‪ : Client-Server‬کالینت رسور باشند‪.‬‬ ‫‪.1‬‬
‫‪ : Stateless‬بدون حالت باشند‪.‬‬ ‫‪.2‬‬
‫‪ : Cacheable‬قابلیت کش داشته باشند‪.‬‬ ‫‪.3‬‬
‫‪ : Layered System‬سیستم الیه بندی داشته باشد‪.‬‬ ‫‪.4‬‬
‫‪ : Uniform Interface‬واسط یکنواخت داشته باشد‪.‬‬ ‫‪.5‬‬
‫‪ : Code On Demand‬دارای قابلیت کد در صورت نیاز باشند‪.‬‬ ‫‪.6‬‬
‫سیستیم که ‪ 6‬ررسط باال را رعایت کند را ‪ Restful‬میگویند‪.‬‬
‫ز‬
‫جایگزین ساده برای برای رسویس های وب است‪.‬‬ ‫از لحاظ رویکرد برنامه نوییس ‪Rest‬‬

‫مزایا در ‪: Rest Web Service‬‬


‫توسعه پذیری در تعامالت میان اجزا‪.‬‬ ‫‪.1‬‬
‫عمومیت واسط ها‪.‬‬ ‫‪.2‬‬
‫توسعه مستقل اجزا و استفاده از واسط ها‪.‬‬ ‫‪.3‬‬
‫افزایش کار یای‪.‬‬ ‫‪.4‬‬
‫ی‬
‫سادگ‪.‬‬ ‫‪.5‬‬
‫انعطاف پذیری‪.‬‬ ‫‪.6‬‬
‫امکان مشاهده و نظارت‪.‬‬ ‫‪.7‬‬
‫قابلیت حمل و قابلیت اطمینان را افزایش میدهد‪.‬‬ ‫‪.8‬‬

‫سنن وب در حال حرکت به سمت رسوییس شدن هستند ُ بدین صورت که کالینت ها تنها از طریق‬ ‫امروزه برنامه های ی‬
‫های با رسور در ارتباط هستند‪.‬‬
‫وب رسویس ی‬

‫به بیان دیگر ارتباط کالینت ها با الیه داده برنامه (‪ )Data Model‬از طریق وب رسویس ها صورت میپذیرد‪.‬‬

‫‪1‬‬
‫در وب رسویس های ‪ Rest‬فراهم کردن منابع برای کالینت ها بسیار مهم است در واقع تمام هدف ‪ Rest‬این است‬
‫که این منابع را به گونه ای در اختیار کالینت قرار دهد تا از آن ها استفاده کنند و یا تغیی یای در آن دهند و یا آن ها را‬
‫حذف کنند‪.‬‬

‫ییک از نکات مثبت ‪ Rest‬این است که ی‬


‫دسییس کالینت ها به این منابع از طریق درخواست های ‪ HTTP‬انجام میگید‬
‫مختلف میتوانند ارسال شوند که هر کدام معنا و مفهوم متفاو یی دارند‪:‬‬
‫ز‬ ‫این درخواست ها با متد های‬

‫متد ها‬

‫بازیای و خواندن منبع مورد استفاده قرارمیگید‪.‬‬


‫به منظور ی‬ ‫‪:Get‬‬
‫ز‬
‫زمای استفاده میشود که بخواهیم منبع جدیدی را اضافه کنیم‪.‬‬ ‫‪:Post‬‬
‫برای دستکاری یک منبع مورد استفاده قرار میگید‪.‬‬ ‫‪:Patch & put‬‬
‫به منظور حذف یک منبع مورد استفاده قرار میگید‪.‬‬ ‫‪:Delete‬‬

‫تفاوت ز‬
‫بی وب رسویس ‪: Rest VS Restful‬‬

‫ابتدا به تعریف ‪ (Representational State Transfer) REST‬یم پردازیم‪ REST .‬یک معماری نرمافزاری‬
‫مبتن بر پروتکل ‪ HTTP‬است که پروتکیل بر اساس درخواست‬ ‫برای پیاده سازی ‪ API‬هاست‪ .‬این معماری ز‬
‫بازیای اطالعات‪PUT ،‬‬
‫ی‬ ‫(‪ )Request‬و پاسخ (‪ )Response‬است‪ HTTP .‬از متد های پیش فرض ‪ GET‬برای‬
‫رسای‪ POST ،‬برای ایجاد و ‪ DELETE‬برای حذف کردن منابع به کار یم رود‪ REST .‬معروف ترین‬ ‫ز‬ ‫برای به روز‬
‫معماری برای تولید ‪ API‬هاست‪ .‬از مزایای ‪ REST‬یم توان به پیادهسازی رسی عتر و توسعه ساده اشاره کرد‪.‬‬

‫ز‬
‫مکانیم ها که اپلیکیشن ها و یا کامپوننت های اپلیکیشن از طریق آن ها با هم ارتباط‬ ‫مجموعه ای از قواعد و‬
‫برقرار یم کنند را )‪ API (Application Programming Interface‬یم گویند‪ API .‬داده های مورد نیاز‬
‫اپلیکیشن را از طریق فرمت )‪ JSON (JavaScript Object Notation‬که فرمت کلید‪-‬مقدار (‪)key-value‬‬

‫‪2‬‬
‫خرویح ارسال یم کند و از این طریق توسعه اپلیکیشن را ساده تر یم کند‪ API .‬جایگزین ‪ SOAP‬شده است‬
‫ی‬ ‫به‬
‫‪.‬‬ ‫ی‬
‫خرویح استفاده یم کرد در حقیقت ‪ API‬به اپلیکیشن ها اجازه یمدهد با‬ ‫که از فرمت ‪ XML‬برای ارسال‬
‫یکدیگر گفتوگو کنند‪.‬‬

‫بعد از درک کردن مفاهیم ‪ REST‬و ‪ API‬حال نوبت به تعریف ‪ RESTful‬است‪ RESTful .‬ییک از معروفترین‬
‫ٔ‬
‫معماریهای مورد استفاده در توسعه وب رسویسها است و انعطاف بسیار زیادی را برای توسعه دهندگان به‬
‫ارمغان آورده است‪ .‬در حقیقت ‪ RESTful‬را یمتوان مفرسی برای ‪ REST‬دانست‪.‬‬

‫تفاوت ‪ REST‬و ‪RESTful API‬‬


‫در حقیقت ‪ REST‬یک معماری است که امکان طرایح یک وب رسویس را به روش خایص در اختیار توسعه‬
‫دهنده قرار یم دهد اما ‪ RESTful API‬یک رسویس است که این معماری را پیاده سازی کرده است‪ .‬وب‬
‫رسویس های که برپایه ‪ RESTful API‬ساخته میشوند‪ Stateless ،‬هستند به این ز‬
‫معن که به جای‬
‫ٔ‬ ‫ی‬
‫سمت خود کالینت ذخیه یمشوند و در هر‬
‫ِ‬ ‫ذخیهسازی وضعیت کالینت در سمت رسور‪ ،‬کلیه دادهها در‬
‫درخواسن ز‬
‫نی برای رسور ارسال یمشوند‪.‬‬ ‫ی‬

‫ویژگهای ‪:RESTful API‬‬


‫• کالینت‪-‬رسور (‪ :)Client-Server‬در این معماری کالینت بهعنوان ‪ front-end‬و رسور بهعنوان ‪back-‬‬
‫ی‬
‫وابستیک ز‬
‫بی کالینت و رسور وجود دارد‪ ،‬این اصل به توسعه‬ ‫‪ end‬شناخته یمشود‪ .‬در این معماری حداقل‬
‫ی‬
‫دهنده ها اجازه یمدهد تا بدون هیچگونه وابستیک به یکدیگر به توسعه اپلیکیشن ربیدازند‪.‬‬
‫• بدون وضعیت (‪ :)Stateless‬هیچ دادهای نباید در زمان پردازش انتقال درخواست روی رسور ذخیه شود‬
‫و ‪ session‬باید در سمت کالینت ذخیه شود‪ .‬به عبارت دیگر‪ ،‬رسور هرگز نسبت به وضعیت درخواستهای‬
‫قبیل کالینت اطالیع ندارد‪ .‬ییک از مزیتهای کلیدی ‪ Stateless‬آن است که تغییات صورتگرفته روی رسور‬
‫هرگز کالینت را با مشکل مواجه نیمکنند‪.‬‬
‫• قابل کش شدن (‪ :)Cacheable‬کالینت باید قادر باشد که ‪ Response‬را به صورت ‪ Cache‬ذخیه کند‪.‬‬

‫دستیای به ‪ Method‬های مختلف یمباید از یک ‪URL‬‬‫ی‬ ‫• یکپارچگ رابط (‪ :)Uniform Interface‬برای‬


‫منحصبهفرد استفاده کرد به عالوه اینکه در ‪ Response‬یمبایست با استفاده از ‪ Status code‬ها اطالعات‬
‫ز‬
‫شفاف در اختیار کالینت قرار دهیم‪.‬‬

‫برای س ی ز‬
‫اخی وب رسویس سمت کالینت به روش زیر عمل میکنیم‪:‬‬

‫‪3‬‬
‫یز‬
‫ساخی نمایش داده شده است‪.‬‬ ‫برای یک وب رسویس نیاز به فانکشن زیر داریم در تصویر مراحل‬

‫برای ایجاد یک وب رسویس دریافت اطالعات به فانکشن و مقادیر زیر نیاز داریم‬

‫ز‬ ‫ی‬ ‫یز‬


‫ساخی ‪ HEADER‬در فانکشن صدا زدن وب رسویس اختیاری است‪ .‬مقدار پارامی در بریح فانکشن ها در ‪ URL‬ی‬
‫جای‬
‫برای قرار گیی آن در نظر گرفته میشود و در ز‬
‫بریح از فانکشن ها مقادیر ورودی به صورت یک ‪ CLOB‬به سمت ارائه‬
‫ز‬
‫همی دلیل مثایل برای این موضوع آورده نشده‬ ‫دهنده رسویس فرستاده میشوند که نادر است به‬

‫‪4‬‬
‫دوم برای صدا زدن یک وب رسویس نیاز به یک بدنه داریم که در تصویر زیر ییک از ساده ترین بدنه های فانکشن وب‬
‫رسویس آورده شده است که در آن هر کدام از اجزا دقیقا همان ز‬
‫معن را میدهند که از نام آن ها برداشت میشود‬

‫>= ‪p_url‬‬ ‫آدرس ارئه دهنده وب رسویس در این پار ی‬


‫امی قرار میگید‬
‫>= ‪p_http_method‬‬ ‫متد استفاده از این وب رسویس در این پار ی‬
‫امی قرار میگید‬
‫‪p_user_name‬‬ ‫<=‬ ‫نام کاربری در این پار ی‬
‫امی قرار میگید‬
‫‪p_password‬‬ ‫<=‬ ‫رمز عبور در این پار ی‬
‫امی قرار میگید‬

‫های که ررسکت ارئه دهنده وب رسویس در اختیار شما قرار میدهد بنا به صالح دید‬ ‫ی‬ ‫ی‬
‫تمام پارامی های باال ‪ +‬پارامی ی‬
‫ررسکت ارئه دهنده اختیاری هستند و میتوانند خایل باشند‪.‬‬

‫‪5‬‬
‫در مثال زیر به جای استفاده از نام کاربری و رمز عبور از توکن برای تایید صالحیت استفاده میکنیم‪:‬‬

‫میتوان به صورت جدا گانه در یک فانکشن دیگر توکن را به دست آورد و سپس در این فانکشن قرارداد‪.‬‬

‫برای مثال ما میخواهیم از جدول ‪ emp‬یک ستون را که ‪ deptno = 10‬دارند را فر ز‬


‫اخوای کنیم و در یک صفحه اپکس‬
‫از آن استفاده کنیم‪.‬‬
‫برا ی فر ز‬
‫اخوای این و ب رسویس نیاز داریم که آدرس ‪ url‬برای ما توسط ررسکت ارائه دهنده فرستاده شود‬

‫برای این کار ابتدا یک صفحه خایل را ایجاد میکنیم‬

‫‪6‬‬
7
‫یز‬
‫ساخی صفحه خایل یک فانکشن از نوع ‪ Call_Web_Service‬میسازیم برای بدست آوردن اطالعات ‪ json‬از‬ ‫بعد از‬
‫وب رسویس‬

‫پس از ساخت این فانکشن برای تست درست بودن فانکشن آن را در یک ‪ Select‬در محیط ‪Toad Or Apex‬‬
‫یز‬
‫نوشی بدنه برای پارس کردن وب رسویس‬ ‫فر ز‬
‫اخوای میکنیم وسپس نتیجه را مقایسه میکنیم و بر اساس آن ررسوع به‬
‫میکنیم‪ .‬ادامه کار پارس کردن در زیر آورده شده است‪:‬‬
‫در ادامه برای نمایش اطالعات پارس شده از وب رسویس نیاز به یک رسی نمایش ها در سیستم داریم‪.‬‬

‫ی‬
‫عملیای صفحه زیر را میسازیم‪:‬‬ ‫در صفحه‬

‫‪8‬‬
‫در تصویر باال در ریجن ‪ web_service_report‬از کالکشن مربوط به وب رسویس یک فر ز‬
‫اخوای انجام شده است‬
‫که در تصویر زیر قابل مشاهده است‪.‬‬

‫ز‬
‫اولی روش‬ ‫برای پارس کردن ‪ json‬ما نیاز داریم که یا به صورت دیتا بییس و یا به صورت اپکیس این کار را انجام دهیم‬
‫به صورت اپکیس میباشد (در زیر آورده شده است)‪:‬‬

‫آشنای با ساختار ‪ json‬که از طرف ررسکت ارائه دهنده سیستم به ما داده شده است و پس از هر بار‬
‫ی‬ ‫ابتدا برای‬
‫فر ز‬
‫اخوای وب رسویس با همان فرمت برای ما اطالعات فرستاده میشود در زیر برای صدا زدن وب رسوییس که بر روی‬
‫ی‬
‫خرویح است‬ ‫جدول ‪ emp‬ساخته شده است با ‪ deptno = 10‬ما اطالعات را به صورت یک ‪ json‬که دارای سه‬
‫دریافت میکنیم‪.‬‬

‫یز‬
‫ساخی فانکشن صدا زدن آن در باال آورده شده است را صدا‬ ‫ابتدا با ررسط خایص وب رسویس مورد نظر را که روش‬
‫ی‬
‫تفاوی وجود ندارد فقط در نوع عمل دکمه تغیی ایجاد میشود این بالک در‬ ‫ز‬
‫مینیم در داینامیک اکشن یا در پروسس‬
‫قسمت پروسس صفحه نوشته شده است ‪:‬‬

‫‪9‬‬
‫در اینجا ررسیط وجود ندارد پس از صدا زدن وب رسویس نیاز به جدول مجازی(‪ )collection‬برای نگه داری اطالعات‬
‫اخوای شده هستیم ‪APEX_COLLECTION‬‬ ‫فر ز‬

‫گشن از وب رسویس را که در یک ‪ CLOB-VARIABLE‬با نام ‪ V_CLOB‬ذخیه کرده‬‫پس از ساخت کالکشن مقدار باز ی‬
‫ایم را با استفاده از ‪ APEX-API‬زیر پارس میکنیم (‪ )APEX_JSON‬و جمع مقادیر باز ی‬
‫گشن از وب رسویس را در یک‬
‫‪ VARIABLE‬با نام ‪ V_COUNT‬ذخیه میکنیم ‪:‬‬

‫‪10‬‬
‫در بالک باال در قسمت بادی در زمان ی ز‬
‫گرفی جمع رکورد های باز ی‬
‫گشن از وب رسویس از '‪P_PATH => 'ITEMS‬‬
‫استفاده کرده ایم دلیل این کار این است که ما برای پارس کردن یک ‪ JSON‬نیاز به نام برای آرایه اول داریم که در‬
‫ز‬
‫همی دلیل نایم‬ ‫صورت وجود از همان نام استفاده میکنیم (در ‪ JSON‬باال ما برای آرایه اول نام ‪ ITEMS‬را داشتیم به‬
‫درصوری که نام وجود نداشته باشد با دستور زیر به آرایه ی اول ‪ JSON‬نام اختصاص‬ ‫ی‬ ‫به ‪ JSON‬اضافه نکردیم) و‬
‫میدهیم (‪ JSON‬ها به دو صورت آغاز میشوند ‪ }"NAME" : "MOHAMMAD"} .1‬در این ‪ JSON‬ما نایم برای‬
‫آرایه نداریم پس باید به روش زیر نایم برای ‪ JSON‬انتخاب کنیم تا ‪ JSON‬را به فرمت مورد نظر تبدیل کنیم ‪.1‬‬
‫}]"‪}"A":[{"ENAME":"MOHAMMAD‬این ‪ JSON‬که ما نایم برای آن انتخاب کرده ایم اکنون میتوانیم کار پارس آن‬
‫ز‬
‫اولی آرایه میباشند ونیازی به ساخت نام وجود ندارد به‬ ‫را انجام دهیم ‪ .2‬در نوع دوم ‪ JSON‬ها خود دارای نام برای‬
‫مانند ‪ JSON‬ی که در مثال ها پارس شده است نام آرایه اول این ‪ JSON‬این است‬
‫ستوی هم مورد استفاده خواهد بود که در ادامه‬ ‫ز‬ ‫}"‪ .).}"ITEMS":[{"ENAME":"KING‬این نام در زمان فر ز‬
‫اخوای‬
‫می به آن اشاره شده است‪.‬‬ ‫یز‬

‫گشن ‪LOOP‬‬ ‫گشن از وب رسویس به ازای آن ها و به تعداد رکورد های باز ی‬


‫پس از بدست آوردن تعداد رکورد های باز ی‬
‫ز‬
‫مینیم و به ازای هر کدام از رکورد های موجود در یک آرایه یک بار اطالعات را در ‪ VARIABLE‬های تعریف شده در‬
‫قسمت ‪ DECLARE‬بالک ذخیه میکنیم سپس هرکدام از ‪ VARIABLE‬ها را به یک ستون کالکشن اضافه میکنیم‬

‫‪11‬‬
‫برای بدست آوردن مقدار فرستاده شده از سمت وب رسویس به صورت زیر عمل میکنیم‪:‬‬

‫‪APEX_JSON.GET_VARCHAR2(P_PATH‬‬ ‫>=‬ ‫)‪'ARRAY_NAME['|| LOOP ||'].COLUMN_NAME‬‬


‫با استفاده از روش باال میتوانید دستور ‪ PARSE-JSON‬را اجرا کنید‪.‬‬

‫‪ >= ARRAY_NAME‬نام آرایه که توسط خود وب رسویس مشخص میشد و یا ما باید برای آن نام گزاری میکردیم‬
‫ز‬
‫ستوی از ‪JSON‬که میخواهیم از درون آرایه پارس کنیم ‪.‬‬ ‫‪ >= COLLUMN_NAME‬نام‬
‫دقت کنید که دستور باال به بزرگ و کوچک بودن حروف حساس میباشد و در صورت رعایت نکردن این امر موجب به‬
‫وجود آمدن خطا میشود(ستون فرستاده شده به ‪ COLLECTION‬دارای مقدار نخواهد بود)‪.‬‬

‫ز‬
‫همی فرایند تکرار میشود فقط به جای استفاده از ‪APEX-COLLECTION‬‬ ‫برای پارس کردن در سطح دیتا بیس ز‬
‫نی‬
‫از جدول ‪ TEMP‬استفاده میکنیم میتوانیم در دو بالک فانکشن و پروسیجر این کار را انجام دهیم‪.‬‬

‫ابتدا نیاز به ساخت یک جدول ‪ TEMP‬داریم‪.‬‬


‫جدول ‪ TEMP‬در دیتابیس مشابه ‪ COLLECTION‬در اپکس عمل میکند‪.‬‬
‫مشخصات ‪:‬‬

‫‪ .1‬جداول ‪ TEMP‬به صورت خصویص و برای یک سشن فعال هستند و اطالعات مربوط به یک سشن را تا‬
‫قبل از ‪ COMMIT‬در خود ذخیه میکنند و پس از هر بار ‪ COMMIT‬کردن جدول تمام اطالعات قبیل از‬
‫این جدول حذف شده و دیگر قابل ی‬
‫دسییس نمیباشند‪.‬‬

‫ی‬
‫‪ .2‬برای استفاده از این جدول باید حتما ویژگ ذخیه اطالعات تا قبل از کامیت را در نظر گرفت‪.‬‬

‫‪12‬‬
‫در زیر نحوه ساخت این نوع جدول(‪ )temp_table‬نمایش داده شده است‪:‬‬

‫نحوه فر ز‬
‫اخوای این جدول به صورت زیر است‪:‬‬

‫‪13‬‬
‫در این تصویر ابتدا رکورد به جدول افزوده شده و سپس فر ز‬
‫اخوای شده است‪:‬‬

‫پس از فر ز‬
‫اخوای جدول باال دستور ‪ COMMIT‬را در سیستم اجرا میکنیم نتیجه در تصویر زیر‪:‬‬

‫ساخی ‪ PROCEDURE‬و ‪ FUNCTION‬برای پارس کردن ‪ JSON‬بر ی‬


‫گشن از وب رسویس رست به صورت زیر‬ ‫یز‬ ‫نحوه‬
‫عمل میکنیم توضیح در تصویر‬

‫‪14‬‬
‫ز‬
‫همی دلیل در این فانکشن از دستور کامیت استفاده‬ ‫در انتها نوع عملیات ‪ commit‬وابسته به ررسایط شما است به‬
‫نشده است‪.‬‬

‫‪15‬‬
‫برای ساختن وب سرویس و ارائه آن به عنوان محصول نهایی به شرکت ها نیاز به فرایند زیر داریم که در اپکس به صورت است‪:‬‬
‫‪wizard‬‬

‫درمنوی زیر گزینه وب سرویس را که با رنگ قرمز مشخص شده است انتخاب میکنیم و به صفحه زیر آن فرستاده میشویم‪.‬‬

‫سپس از این صفحه گزینه ماژول را از گزینه های سمت چپ انتخاب کنید‬

‫‪16‬‬
‫پس از انتخاب گزینه ماژول در صفحه قبلی به صفحه زیر فرستاده میشویم و در آنجا با انتخاب گزینه ساخت ماژول وارد‬
‫ساخت فرایند ساخت وب سرویس میشویم‪.‬‬

‫در قسمت ساخت ماژول نیاز به تکمیل اطلاعات زیر داریم که در تصویر هستند و در زیر تصویر توضیحات هر کدام آورده شده‬
‫است‪.‬‬

‫‪17‬‬
‫>= ‪Module Name‬‬ ‫نام وب سرویس است و به حروف بزرگ و کوچک حساس میباشد و باید نام یکتا‬
‫باشد‬

‫‪Base Path‬‬ ‫>=‬ ‫برای مشخص کردن مبدا سرویس از این گزینه استفاده میشود به این معنا که تمام ماژول هایی که با‬
‫این نام شروع میشوند از این ماژول سرویس میگیرند‪.‬‬

‫‪Is Published‬‬ ‫<=‬ ‫مشخص میکند که این سرویس در دسترس باشد یا خیر‬

‫‪Pagination Size‬‬ ‫<=‬ ‫تعداد رکورد هایی که در هر بار فراخوانی سرویس میتوان ارسال کرد را در این آیتم مشخص‬
‫میکنیم‬

‫>= ‪Comment‬‬ ‫توضیحات در ارتباط ماژول‬

‫پس از وارد کردن اطالعات باال برروی گزینه ساخت ماژول در قسمت باالیی سمت راست تصویر کلیک میکنیم و در زیر این‬
‫ریجن یک ریجن با نام زیر برای شما نمایش داده خواهد شد‬

‫در قسمت فول یو آر ال در تصویر باال قسمت قرمز رنگ همان گزینه دوم است که در ساخت ماژول نام گزاری کردیم‪.‬‬

‫‪18‬‬
‫پس از ساختن ماژول بر روی گزینه ایجاد تمپلیت پایین سمت راست(در تصویر بالا) کلیک میکنیم و به صفحه زیرفرستاده‬
‫میشویم در این قسمت میتوانیم ورودی های سرویس را در ادامه نام تمپلیت در به مانند مثال زیر وارد کنیم مقدار دهی در‬
‫مرحله بعد است‪.‬‬

‫>= ‪URI Template‬‬ ‫معرفی قسمتی که از آن سرویس فراخوان‬


‫میشود‬

‫>= ‪Priority‬‬ ‫اولویت برای ترتیب نحوه ارزیابی الگوی منبع‬

‫>=‪HTTP Entity Tag Type‬‬ ‫شناسه نسخه برای یک منبع برای جلو گیری از بازیابی منایع بازیابی‬
‫شده‬

‫و کامنت برای توضیحات‬

‫‪19‬‬
‫پس از انتخاب گزینه ساخت هندلر به صفحه زیر فرستاده میشویم که در آن جا میتوانیم کوئری را که میخواهیم توسط وب‬
‫سرویس ارسال کنیم بسازیم و در آنجا قرار دهیم‪:‬‬

‫در قسم بالایی صفحه میتوان متد سرویس را مشخص کرد و بر اساس آن سرویس را ساخت نوع متد در نوع کوئری اثر دارد پس‬
‫در ساخت آن توجه داشته باشید‪.‬‬

‫نوع منبع را نیز در این صفحه میتوان انتخاب کرد‬

‫انواع متد ها در صفحات بالا توضیح داده شده است‪.‬‬

‫در صورت انتخاب گزینه کوئری از نوع منبع میتوان فایل سی اس وی نیز توسط وب سرویس ارسال کرد‪.‬‬

‫در پایین صفحه در قسمت منع میتوان کوئری را بار گزاری کرد اگر در آخر کوئری ها سمیکالن قرار دهیم با خطا مواجه میشویم‪.‬‬

‫در صورت استفاده از متد هایی غیر از متد گت باید به گیرنده سرویس بگوییم که یک ساختار جی سان را بر مبنای ساختار ما‬
‫تولید کند و از طریق درخواست برای ما ارسال کند‪.‬‬

‫‪20‬‬
‫ایجاد کردیم را میتوانیم در کوئری استفاده کنیم‪.‬‬ ‫‪Template‬‬ ‫زیر ورودی هایی را که در بخش‬ ‫در محیط ‪Source‬‬

‫برای تست وب سرویس در قسمت تمپلیت آدرس را کپی میکنیم و آن را در قسمت آدرس کروم قرار میدهیم برای این نتیجه‬
‫صحیح بگیریم نیاز داریم که اطلاعات صحیح را برای پارامتر های ورودی وارد کنیم از جدول‬

‫‪EMP‬‬

‫‪21‬‬
‫حالا برای محدود کردن دسترسی نیاز داریم که یک گروه کاربری ایجاد کنیم و یک کاربر را به این گروه متصل کنیم از مسیر زیر این‬
‫کار را انجام میدهیم‪.‬‬

‫در صفحه زیر به صفحه گروه کاربری میرویم و در آنجا یک گروه کاربری ایجاد میکنیم فقط یک گروه کاربری ایجاد میکنیم و نیازی‬
‫به دیگر گزینه ها که به صورت آپشن هستند نیاز نداریم‪.‬‬

‫پس از ایجاد گروه از منوی بالای تصویر زیر به قسمت کاربران میرویم و یک کاربر را ایجاد میکنیم‬

‫‪22‬‬
‫در این قسمت نامی را برای کاربر انتخاب میکنیم و یک ایمیل برای او قرار میدهیم‬

‫‪23‬‬
‫در قسمت پایینی صفحه برای کاربر رمز عبور را تعریف میکنیم و گروه کاربری را برای او انتخاب میکنیم‬

‫پس از ایجاد کاربر و تعیین گروه کاربری به صفحه زیر که در همان صفحه ایجاد ماژول وب سرویس است میرویم ‪.‬‬

‫‪24‬‬
‫بعد از آن نیاز داریم که یک دسترسی برای کاربر بر روی وب سرویس ایجاد کنیم‬

‫برای ایجاد دسترسی نیاز داریم که یک نقش را به کابر اختصاص دهیم و در آن از نقش های موجود استفاده میکنیم‬

‫‪25‬‬
‫نقش دولوپر به این معنا است که شما با نام کاربری و رمز عبوری که در حال حاضر به سامانه وارد میشوید میتوانید از این‬
‫سرویس استفاده کنید که باید در درخواستی که برای فراخوانی این سرویس ارسال میکنید این نام کاربری و رمز عبور را نیز ارسال‬
‫کنید‪ .‬در غیر این صورت با ارور زیر مواجه میشوید‪.‬‬

‫پس از انتخاب گزینه بالا میتوانید به صورت دستی برای آن رمز عبور و نام کاربری وارد کنید‬

‫و میتوانید در فانکشن فراخوانی وب سرویس در قسمت درخواست رمز عبور و نام کاربری را نیز ارسال کنید‪ .‬به صورت زیر‬

‫‪26‬‬
‫تست مقدار بازگشتی از طریق فانکشن‬

‫‪27‬‬
‫برای گروه کاربری مورد نیاز خود یک نقش تعریف میکنیم و سپس دسترسی را برروی نقش ایجاد شده خودمان قرار میدهیم‬
‫تصاویر به صورت رشته ای و فرآیندی هستند‪.‬‬

‫‪28‬‬
‫نقش گروه کاربران را در این قسمت‬
‫وارد میکنیم‬

‫ماژول یکه میخواهیم در دسترس این‬


‫کار بران باشد انتخاب میکنیم‬

‫‪29‬‬
‫برای دسترسی به داده ها با نام کاربری و رمز عبور کاربر ایجاد شده میتوانیم این کار را انجام دهیم در این صورت باید در‬
‫فانکشنی که سرویس را فراخوانی میکند رمز عبور و نام کاربری را قرار دهیم تصویر برای مثال است و نام کاربری و رمز عبور‬
‫صحیح نیست‪.‬‬

‫برای ساخت یک وب سرویس از نوع ‪ post‬به روش زیر عمل میکنیم ‪.‬‬

‫یک ماژول با نام مورد نظر میسازیم‬

‫‪30‬‬
‫پس از انتخاب گزینه بالا اطلاعات ماژول را وارد میکنیم و بعد از ایجاد ماژول و وراد کردن اطلاعات ماژول صفحه زیر را مشاهده‬
‫میکنیم‬

‫پس از ثبت ماژول گزینه بالا نمایش داده میشود که در این قسمت میتوان ‪ template‬را مشخص کرد و در ادامه گزینه‬
‫‪Url Tempalte : template/:parameter/:parameter‬‬ ‫‪ template url‬با نمونه متن رو برو ورودی ها را مشخص کرد‬

‫‪31‬‬
‫بعد از ساخت ‪ template‬گزینه بالا به ما نمایش داده میشود که در آن منبع (عملیات) و متد مورد نظر و نوع فایل و نوع‬
‫قراخوانی را مشخص میکنیم را با استفاده از دستورات ‪ sql‬و گزینه های موجود انتخاب میکنیم برای مثال اگر در قسمت و‬
‫'‪ METHOD = 'GET‬و در قسمت '‪ SOURCE TYPE = 'Query‬را انتخاب کنیم میتوانیم یک فایل ‪ .csv‬را با توجه به کوئری ساخته‬
‫شده ارسال کنیم‪.‬‬

‫برای مثال در متد ‪ post‬نیاز به یک کوئری برای ‪ insert‬کردن داده ها و مقدار های ارسالی به جدول داریم یه مانند مثال زیر‬

‫در تصویر بالا ‪ url‬مورد نیاز برای استفاده از این وب سرویس نیز نوشته شده است و میتوانید یک فانکشن به صورت داینامیک‬
‫و یا با مقدار ثابت برای این آدرس مقایر را ارسال کنید مثال زیر یک نمونه فانکشن از نوع استاتیک است‪:‬‬

‫‪32‬‬
‫در زمان ساخت وب سرویس از نوع ‪ POST‬نیاز به یک ‪ L_BODY‬داریم که به صورت ‪ JSON‬است و آن را در بدنه فانکشن قرار‬
‫میدهیم در تصویر زیر شما فراخوانی این فانکشن را مشاهده میکنید‪.‬‬

‫بعد از اجرای دستور بالا و مشاهده میکنید که اطلاعات مشخص شده در بدنه فانکشن در جدول ثبت شده اند‪ .‬تصویر زیر‪:‬‬

‫حالا اگر بخواهیم که این ستون را در اپلیکیشن مشاهده کنیم از طریق همان وب سرویسی که در ابتدای این فایل مشاهده میکنید‬
‫فراخوانی میکنیم در تصویر زیر‬

‫‪33‬‬
34

You might also like