Warning: Private methods cannot be final as they are never overridden by other classes in /home/targostar/public_html/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php on line 343

Warning: Private methods cannot be final as they are never overridden by other classes in /home/targostar/public_html/wp-content/plugins/wp-rocket/inc/classes/traits/trait-memoize.php on line 87

Warning: Cannot modify header information - headers already sent by (output started at /home/targostar/public_html/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php:343) in /home/targostar/public_html/wp-content/plugins/wp-rocket/inc/classes/Buffer/class-cache.php on line 137

Warning: Creating default object from empty value in /home/targostar/public_html/wp-content/plugins/seoaal-core-/admin/ReduxCore/inc/class.redux_filesystem.php on line 29

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/targostar/public_html/wp-content/plugins/wp-jalali/lib/date.php on line 96

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/targostar/public_html/wp-content/plugins/wp-jalali/lib/date.php on line 98

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/targostar/public_html/wp-content/plugins/wp-jalali/lib/date.php on line 260

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/targostar/public_html/wp-content/plugins/wp-jalali/lib/date.php on line 262

Deprecated: Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /home/targostar/public_html/wp-content/plugins/wp-jalali/lib/date.php on line 283

Deprecated: Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /home/targostar/public_html/wp-content/plugins/wp-jalali/lib/date.php on line 351

Deprecated: Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /home/targostar/public_html/wp-content/plugins/wp-jalali/lib/date.php on line 353
نکاتی در مورد وب سرویس در لاراول - فناوران تارگستر

نکاتی در مورد وب سرویس در لاراول

نکاتی در مورد وب سرویس در لاراول

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

۱- Api بطور کلی چیست:
ویکیپدیا توضیحات قابل درک و مفیدی را در خصوص مفهوم کلی API فراهم کرده است. اما اجازه دهید بصورت خلاصه مفهوم کلی از آن را بیان کنیم.
در API یک interface وجود دارد که اجازه میدهد سایر برنامه با آن تعامل داشته باشند. البته بعضی از API ها پیچیده تر هستند و بعضی از آنها تنها اطلاعات را به اشتراک میگذارند و اجازه دریافت اطلاعات از سمت کاربر را نمیدهند.

۲ – منظور از RESTful چسیت؟
اگر شما علاقه مند به یادگیری کل معماری وب سرویس ها هستید میبایست کمی عمیق تر کاوش کنید به این معنی که ساختار endpoint های مختلف شما را به سایر endpoint ها ارجاع میدهد البته این دیگر بحث ساده ای نیست
ما از متد های HTTP متفاوت برای ساخت endpoint های متفاوت استفاده میکنیم
اجازه دهید این جمله را با چند مثال توضیح دهیم.

# List all the posts
GET /posts

# Create a post
POST /posts

# View a post
GET /posts/{id}

# Update a post
PATCH /posts/{id}

# Delete a post
DELETE /posts/{id}

 

آز آنجایی که میدانید ما دار این مثال از endpoint های مختلف برای کارهای مختلف استفاده میکنیم . در لاراول ما میتوانیم هر کدام از این endpoint ها را به به کنترلر های مختلف ارجاع دهیم.

در مثال بالا ما از متد GET لیست پستها را دریافت میکنیم از متد POST اطلاعات مربوط به پست ها را ارسال میکنیم و …

۳ – سرویس های stateless چیست؟
سرویس های stateless از دیتابیس و یا سرویس های کش برای نگهداری وضعیت خود استفاده می کند.
در سرویس های رسمی – مانند یک سرویس وب سنتی – کاربر باید با استفاده از ایمیل / رمز عبور خود وارد سیستم شود در این حالت ما اطلاعات کاربر معتبر را در یک session ذخیره میکنیم و هر زمان که لازم باشد داده ها را از آن بازیابی می کنیم.
اما سرویس های Stateless به روش دیگری عمل میکنند به این معنی که سرویس stateless اطلاعات را در خود ذخیره نمیکند به عبارت دیگر این نگهداری اطلاعات در دیتابیس و یا سرویس های کش بصورت از راه دور اتفاق میفتد.

۴- سرویس های احراز هویت به چه صورت عمل میکند؟
معمولا API ها کاربران را با استفاده از توکن شناسایی میکنند و  برای دریافت این توکن در برنامه آنها را در query string یا در header ارسال میکنند. دو روش احراز هویت محبوب در بین توسعه دهندگان وجود دارد
اولین سرویس احراز هویت این است که برای کاربر یک توکن از پیش ایجاد میشود اگر ما این توکن را در هنگام درخواست ارسال کنیم سرویس API کاربر را درbackground احراز هویت میکند. لاراول بصورت پیشفرض از این قابلیت پشتیبانی میکند.

 

روش دیگر JSON web tokens نام دارد. که این روش نسبت به روش قبل کمی پیچیدگی بیشتری دارد اما با این وجود این روش امنیت بالاتری را به کاربر ارائه میدهد البته بصورت پیشفرض لاراول از این قابلیت پشتیبانی نمیکند اما یک پکیج مناسب برای این کار در لاراول وجود دارد

برای استفاده از این قابلیت میتوانید از این پکیج استفاده کنید: پاسپورت

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

۵- چرا لاراول در middleware ها برای API و Web دسته بندی متفاوتی دارد؟
سرویس های API و WEB به تنظیمات و ورودی های متفاوتی نیاز دارند به عنوان مثال:

بدون ssesion: در وب سرویس ها ما به سرویس های اجرا کننده session نیازی نداریم

مدیریت درخواستها در API: ما در وب سرویس ها نیاز داریم که سرعت دریافت درخواست ها را مدیریت کنیم

استفاده از CSRF token: در وب سرویس ما نیازی به CSRF نداریم

    Leave Your Comment

    Your email address will not be published.*