تعریف API Endpoint
API Endpoint آخرین نقاط تماس در سیستم ارتباطی API میباشد.
برای درک بهتر این مطلب توصیه میشود ابتدا مقاله، نقطهپایانی چیست؟ مطالعه شود.
رابط برنامهنویسی نرمافزار کاربردی (Application Programming Interface – به اختصار API) روشی است که در آن یک برنامهکاربردی از یک برنامهکاربردی دیگر، سرویسی را درخواست مینماید. API ها به توسعهدهندگان نرمافزار این امکان را میدهند که از ایجاد مجدد ویژگیهای که از قبل در نرمافزارهای کاربردی (Application Feature) وجود داشتهاند، اجتناب کنند. API Endpoint مولفهای است که در آن درخواستهای دریافت سرویسی خاص (که به نام فراخوانهای API شناخته میشوند) برآورده میشوند.
هنگام گفتگوی تلفنی Alice و Bob، کلماتی بین آن دو رد و بدل میشود. کلمات و گفتگوی Alice در این “Endpoint” به سمت Bob هدایت میشود.
Alice: “سلام Bob ———-> “Bob
به طور مشابه، یکپارچهسازی API (API Integration) همانند همین مکالمه است. اما به جای گفتن «سلام»، یک API Client چیزی مشابه این جمله «به مقداری داده نیاز دارم» به سرور API میگوید – درواقع یک فراخوان API (API Call) ارسال میشود -. سپس Endpoint مربوط بهAPI Server میگوید “داده در اینجا موجود است” – یک پاسخ API (API Response).
نکته قابل توجه این است که API Endpoint موجودیتهای فیزیکی همانند Alice و Bob نیستند بلکه آنها در نرمافزار وجود دارند، نه سختافزار.
سرورهای API و کلاینتهای API
API ها بر روی یک یا چند سرور میزبانی میشوند – کامپیوترهای اختصاصی که دادهها را ذخیره نموده و نرمافزارهای کاربردی را اجرا میکنند -. هر سرور دادهها، محتوا و ویژگیهای نرمافزاری را از طریق اینترنت ارائه میدهد. API Endpoint تقریباً همیشه بر روی یک سرور میزبانی میشود.
نقطه مقابل اتصال API (API Connection)، سرویس گیرنده API یا همان API Client میباشد – موجودیتی که سرویسی را درخواست مینماید، با وجود اینکه بیشتر فراخوانهای API ممکن است خودکار نباشند، API Client تحت عنوان “API کاربر” (API User) نیز نامیده میشود.
یک API Client چگونه Sever Endpoint را شناسایی میکند؟
به منظور بکارگیری API و استفاده از قابلیتهای آن، باید مستندات API را در اختیار داشته باشید. این مستندات شامل موارد زیر میباشد:
- انواع درخواستهایی که API قادر به پاسخگویی آنها است.
- قابلیتها و ویژگیهای API
- نحوه قالببندی پاسخهای API و مشخص نمودن نقاط پایانی
توسعهدهندگان میتوانند با بررسی مستندات یک API، این اطلاعات را در حین ساخت برنامهها و نرمافزارهای کاربردی خود ثبت کنند..
API چگونه از URL استفاده میکند؟
Uniform resource locator – به اختصار URL – به منظور دستیابی به اهداف متعددی نظیر مکانیابی صفحات وب مورد استفاده قرار میگیرد. هنگامی که کاربری یک URL را در مرورگر خود وارد میکند، مرورگر میداند این صفحه وب را کجا پیدا کند و آن را بارگذاری مینماید.
URL همچنین API Endpoint را نشان میدهد. وقتی Alice و Bob تلفنی صحبت میکنند، Alice با شماره تلفن Bob تماس میگیرد. به طور مشابه، API endpoint مربوط به URL همانند یک شماره تلفن برای برقراری فراخوانهای API (API Call) میباشد.
یک API server میتواند میزبان یک یا چند API Endpoint باشد، به این معنی که فراخوانهای ارسال شده به نشانیهای اینترنتی، آن نقاط پایانی را پذیرفته و پردازش میکند. API Client نیز باید یک URL داشته باشد تا API server بداند پاسخهای خود را به کجا ارسال کند، همانطور که Bob و Alice هر دو به یک شماره تلفن برای برقراری تماسهای تلفنی بین خود نیاز دارند. توسعهدهندگان نیز این URL را هنگام ساخت برنامهها و نرمافزارهای کاربردی خود تنظیم و تعریف میکنند.
URL همیشه شامل پروتکل لایه برنامهکاربردی (Application Layer) نظیر HTTP است که برای دسترسی به آن مورد استفاده قرار میگیرد. اکثر API های وب از HTTP استفاده میکنند، بنابراین API endpoint در URL گنجانده شده است.
چگونه API Endpoint و Client احراز هویت میشوند؟
یک API چنانچه به درستی طراحی شده باشد، فراخوانهای API را از هر کسی نمیپذیرد و آنها را اصالتسنجی مینماید. در واقع API منجر به مسدودسازی و عدم دریافت دادههای مخرب مهاجمان در API server میشود. علاوه بر این، بکارگیری API اغلب هزینه دارد، بنابراین در این موارد API server باید بررسی کند که آیا فراخوانی و درخواست به API که از جانب یک Client ارسال شده، آیا هزینه آن را Client پرداخت نموده است یا خیر.
علاوه بر این، API server باید مطمئن شود که آیا API client که سرویس API را درخواست و فراخوانی نموده، معتبر و قابل اعتماد است؛ این کار را از طریق احراز هویت (Authentication) انجام میشود.
Authentication پروسه تأیید هویت است. همانطور که یک کاربر انسانی از چندین روش برای احراز هویت در یک سیستم استفاده میکند، API endpoint نیز به چهار روش زیر میتواند احراز هویت را انجام دهد:
- API Key: در این روش به هر API Client، یک کلید یا یک رشته منحصر به فرد از کاراکترها اختصاص داده میشود که فقط
API Client و API Service از آن مطلع میباشند. هنگامی که API Client یک API Call (درخواست یا فراخوان API) را به سرور میفرستد، کلید مربوطه را نیز ارسال میکند تا سرور بداند درخواست از کجا آمده است. - احراز هویت اولیه (نام کاربری و رمز عبور): مشابه رویکرد API Key، API Client یک نام کاربری و رمز عبور را برای هر API Service تنظیم میکند و این اطلاعات اصالتسنجی (نام کاربری و رمز عبور) را در API Call ارسال مینماید.
- OAuth token: بهجای احراز هویت یک Client، یک API Client میتواند با بکارگیری پروتکل OAuth یک Token اعتبارسنجی را از یک سرور معتبر مربوط به اعتبارسنجی، دریافت کند.
- TLS دوطرفه یا TLS متقابل (Mutual TLS): TLS پروتکلی است که هنگام بارگذاری صفحات وب، یک اتصال تأیید شده بین Client و سرور ایجاد میکند. همچنین میتواند هر دو سمت API Client و API server را تأیید نماید.
در بسیاری از موارد، Mutual TLS موثرترین روش احراز هویت میباشد. به عبارت دیگر، برای یک فراخوان و یک درخواست، هم نقاط پایانی و هم Client را احراز هویت میکند، نه فقط Client را؛ بنابراین هر دو طرف میتوانند مطمئن باشند که دادهها از یک منبع معتبر دریافت میشوند.
همچنین در Mutual TLS کلیدهای خصوصی (Private Key) مورد استفاده قرار میگیرند که هرگز بین نقاط پایانی به اشتراک گذاشته نمیشوند و بنابراین در حین انتقال قابل رهگیری نمیباشند. این درحالی است که کلیدهای API، رمزهای عبور و توکنها همگی ممکن است تکراری باشند و یا سرقت شوند.