توسعه APIها روز به روز بیشتر و پرطرفدارتر میشود، اما هنوز ابهامات و سوالات زیادی در این زمینه برای بسیاری از توسعه دهندگان وجود دارد. در این مقاله ما تعدادی از سوالات رایج در این زمینه را جمعآوری کردیم و تلاش کردیم تا به صورت مختصر و به بهترین وجه به آنها پاسخ دهیم.
۱-بطور کلی API چیست؟
در این مورد ویکی پدیا توضیحی مختصر و قابل فهم برای مفهوم APIها فراهم کرده است، اما در اینجا به طور خیلی خلاصه به توضیح آن میپردازیم. در واقع API یک رابطه کاربری است که به سرویسهای دیگر اجازه میدهد تا اکشنهای CRUD را از طریق آن انجام دهند البته بعضی APIها کاملتر هستند و بعضی دیگر فقط دادهها را به اشتراک میگذارند و هیچ عملی برای ویرایش آنها انجام نمیدهند.
۲- RESTFUL به چه معناست؟
در ادامه به توضیح مختصر restful میپردازیم. لازم به ذکر است برای آشنایی بیشتر با آن میتوانید از مقاله restful به زبان ساده استفاده کنید و آن را به صورت عمیقتر بشناسید. در واقع restful یک رابطه برنامه نویسی کاربردی میباشد که از درخواستهای HTTPو دستوراتی از قبیل get، post، put، delete به منظور ایجاد، بروزرسانی، دریافت، حذف و پردازش بر روی دادهها و منابع بهره میبرد.
# 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}
۳- stateless Api به چه معناست؟
در این مقاله ما به توضیح مختصر و ساده شدهی این مفهوم میپردازیم، در صورتی که میخواهید با این مفهوم بیشتر آشنا شوید میتوانید از این مقاله استفاده کنید.
امّا به طور مختصر، در سرویسهای stateful -مانند یک وب سرویس سنتی- یک کاربر برای لاگین کردن در سیستم باید از ایمیل و رمز عبور خود (یا موارد دیگر مانند آن) استفاده کند تا پس از آن سرویس موجود اطلاعات کاربر معتبر با اطلاعات داده شده را درsession ذخیره کند در این حالت در واقع ما دادههایی را در "state" ذخیره میکنیم و هر زمان که نیاز داشته باشیم دادهها را از آن بازیابی میکنیم.
سرویسهای stateless به صورت متفاوتی کار میکنند. در این حالت متغییر session از راه دور(remote) است، بدین معنا که سرویس api آن را مدیریت نمیکند. Sessionهای از راه دور(ریموت) اعتبارنامهای که ما باید به همراه درخواستهای که به سمت Api ارسال میکنیم، قرار دهیم را در خود ذخیره میکنند. نکتهای که در اینجا وجود دارد، Api هیچ state را ذخیره نمیکند؛ به عبارت دیگر stateless به این معناست که دادهها و اطلاعات کاربر، بین درخواستها، در سرور ذخیره نمیشود و وضعیت هر session در سمت کاربر ذخیره میشود.
۴-احراز هویت در API چگونه کار میکند؟
اغلب اوقات APIها کاربران را از طریق توکن شناسایی میکنند. این توکن میتواند به عنوان یک پارامتر در header و یا به عنوان یک کوئری string مورد استفاده قرار بگیرد. در APIها دو نوع توکن محبوب برای احراز هویت وجود دارد:
مورد اول Api token authentication است که در این حالت کاربر یک توکن منحصر به فرد و از قبل تولید شده دارد. اگر ما این توکن را به همراه درخواست خود ارسال کنیم، سرویس Api در پشت صحنه کاربر مورد نظر ما را تایید میکند. این ویژگی به طور پیش فرض توسط لاراول پشتیبانی میشود.
مورد دیگر استفاده از JSON web tokens است. این مورد یک روش پیچیدتر است اما امکانات و امنیت بیشتٰری را ارائه میدهد. لاراول به صورت پیش فرض از JSONتوکنها پشتیبانی نمیکند، اما ما میتوانیم از این پکیچ عالی برای انجام این کار استفاده کنیم.
همچنین شما میتوانید از لاراول passport برای اجراز هویت در Apiها استفاده کنید.
۵-چرا در لاراول یک گروه میان افزار(middleware) برای "web" و یک گروه میان افزار برای "api" وجود دارد؟
این مورد به stateful و stateless بودن ارتباط دارد. لایهی API نسبت به لایهی web نیازها و گزینههای متفاوتی دارد، برای مثال:
- No session: میان افزار API شامل مدیریت session نمیشود
- API Rate limiting: تعداد درخواستها در API ، به تعداد مشخصی محدود میشود
- No CSRF token validation: یک درخواست احراز هویت در API با توکنهای API انجام میشود، نه با CSRF
- بدونه رمزگذاری کوکی
نکته: در صورتی که شما در کنترلر API خود از اتصال مدل-روت استفاده میکنید، مطمئن شوید که میان افزار "binding" را به گروه میان افزار API خود اضافه کردهاید.
۶- چگونه میتوانم API خودم را تست کنم؟
به طور معمول شما باید تست ویژگیهای مختلف را برای API خود بنویسید. برای آشنایی بیشتر با این مورد شما میتوانید دو ویدیو نوشتن تست برای api و همچنین اطلاعات فیک برای تست api را مشاهده کنید.
در این مقاله تلاش شد تا به برخی سوالات متداول در زمینهی Api پاسخ داده شود برای آشنایی بیشتر با apiها شما میتوانید از آموزشهای ویدیوی موجود در سایت استفاده کنید و همچنین در صورت هرگونه سوال یا ابهام در این موضوع میتوانید سوال خود را در بخش نظرات مطرح کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید