API چیست و چگونه می توان از API استفاده کرد؟

در عمل، API ها، به کلاینت ها این امکان را می دهند تا به یک پایگاه داده حفاظت شده دسترسی داشته باشند

0
1284
API چیست و چگونه می توان از API استفاده کرد؟
API چیست و چگونه می توان از API استفاده کرد؟

API چیست و چطور می توان از API استفاده کرد؟

API چیست

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

API ها چه کاری انجام می دهند؟

در سطوح بالا ، API ها میان دو برنامه کاربردی ارتباط برقرار می کنند. آنها نمی توانند به صورت مستقیم ارتباط برقرار کنند ، زیرا به کد یکدیگر دسترسی ندارند ، برای همین می بایست میانشان سیمی باشد که سیگنال ها به آن سوی خط فرستاده شود. API ها آموزش ارسال سیگنال ها را تعیین می کنند. تقریباً هر برنامه کاربردی روی کامپیوتر شما برای برقراری نوعی ارتباط با هزاران چیز دیگر، از API بهره می برد.
در عمل ، اصطلاح “API” معمولاً برای اشاره به API های مبتنی بر وب که ارتباط میان یک سرور و خریدار ، یا یک سرور و یک سرویس پس زمینه را شکل می دهد به کار می رود. این API ها به عنوان یک نقطه دسترسی که در پس زمینه هر سرویسی کار می کنند.

برای مثال تصور کنید که شما یک برنامه سمت کلاینت یا خریدار دارید که می تواند با یک سرور یا با یک بانک اطلاعاتی صحبت کند. واضح است که شما نمی توانید به کلاینت یا خریدار اجازه دهید تا به دیتابیس شما دسترسی کامل داشته باشد ، زیرا این امکان چندین مشکل را ایجاد می کند.

ابتدا اینکه این احتمالاً بدترین خطای امنیتی است که می توانید مرتکب آن شوید ، دوم اینکه دسترسی کامل باعث می شود تا کل مدل سرور کلاینت نیز شکسته شود. کلاینت یا خریدار سرویس شما نباید نگران برقراری ارتباط با بانک اطلاعاتی یا ذخیره داده باشد.

API چیست و چطور می توان از API استفاده کرد؟
API چیست و چطور می توان از API استفاده کرد؟

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

کلاینت یا خریدار سرویس، روی HTTP، درخواستهایی را با استفاده از GET و POST به برنامه API ارسال می کند ، که معمولاً یک URL بر روی سرور شما می باشد، چیزی شبیه به  “api.yoursite.com”. اگر کلاینت بخواهد پایگاه داده را با یک پرس و جو یا query خاص جستجو کند ، API  از پایگاه داده می خواهد جستجو را انجام دهد و سپس نتایج را بر می گرداند. معمولاً API ها برقراری ارتباط خود را با JSON انجام می دهند ، که نتایج را به عنوان یک object با انواع کاملاً تعریف شده باز می گرداند ، برای مثال:

{
  "name": "MyAPI",
  "search_results": [...]
}

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

چطور از API ها استفاده کنیم؟

API ها کاملاً استاندارد هستند. آنها تقریباً همیشه از طریق HTTP قابل دسترسی خواهند بود و معمولاً داده های JSON را برمی گردانند ، به این معنی که هر زبان برنامه نویسی که می تواند درخواست HTTP ایجاد کند و رمزگشای JSON باشد ، می تواند با یک API صحبت کند و از آن اطلاعاتی دریافت کند. حتی چیزی به آسانی یک ابرازک که می تواند محتوای مبتنی بر وب را دانلود کند ، توان این را دارد تا به API دسترسی پیدا کند.

شما می توانید در هر برنامه ای که می خواهید از API های همهی استفاده کنید ، هر چند که برای جلوگیری از سوء استفاده گاهی محدود می شوند. برای مثال ، KeyCDN برای دریافت اطلاعات موقعیت مکانی یک آدرس API، از یک API استفاده می کند ، اما شما به سه درخواست در هر ثانیه محدود می شوید. با استفاده از یک درخواست HTTP GET به نقطه انتهایی API با آدرس IP منتقل شده به عنوان یک پارامتر URL می توانید این کار را در هر برنامه ای انجام دهید برای مثال:

https://tools.keycdn.com/geo.json?host={IP_ADDRESS}

چیزی مانند کد زیر بازگشت داده می شود:

{
  "status": "success",
  "description": "Data successfully received.",
  "data": {
    "geo": {
      "host": "173.79.254.254",
      "ip": "173.79.254.254",
      "rdns": "pool-173-79-254-254.washdc.fiOS.verizon.net",
      "asn": 701,
      "isp": "MCI Communications Services, Inc. d/b/a Verizon Business",
      "country_name": "United States",
      "country_code": "US",
      "region_name": "Virginia",
      "region_code": "VA",
      "city": "Alexandria",
      "postal_code": "22309",
      "continent_name": "North America",
      "continent_code": "NA",
      "latitude": 38.719,
      "longitude": -77.1067,
      "metro_code": 511,
      "timezone": "America/New_York",
      "datetime": "2019-08-22 17:30:48"
    }
  }
}

شما می توانید این نتیجه را در متغیری به نام response ذخیره کنید. سپس ، اگر تمایل دارید ZIP code آدرس را متوجه آن باشید ، می توانید با استفاده از answer.data.geo.postal_code به آن دسترسی داشته باشید.

برای بیشتر زبان های برنامه نویسی، کتابخانه هایی وجود دارد که این روند را آسان تر می کند ، و به کمک از زبان ها نیز برای این کار، ابزاری داخلی دارند. ما چند مورد معمول را نشان می دهیم ، اما یک جستجوی سریع برای ___ HTTP Request باید نتایج زبان برنامه نویسی را که با آن کار می کنید، به شما نشان بدهد.

زبان جاوا اسکریپت و ارسال درخواست به API

JavaScript  با استفاده از آبجکت ()XMLHttpRequest می تواند درخواست HTTP را دریافت کند:

const Http = new XMLHttpRequest();
const url='https://api.github.com/';
Http.open("GET", url);
Http.send();

Http.onreadystatechange = (e) => {
  console.log(Http.responseText)
}

با این حال ، این ساختار دستوری بسیار ساده است ، بنابراین معمولاً از دیگر کتابخانه ها نیز استفاده می شود ، مگر اینکه شما به شدت به Vanilla JS نیاز داشته باشید.  برای مثال jQuery از روش ajax برای انجام این کار بهره می برد:

$.ajax('https://api.github.com/', {
    dataType: 'json',
    success: function (data, status, xhr) { ... }
});

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

axiOS.get('https://api.github.com/')
  .then((data) => {
    console.log(data);
  }
)

در هر صورت ، آبجکت های JSON می توانند با استفاده از JSON.parse() مستقیم به جاوا اسکریپت دیسریالایزد شوند ، که این، به شما امکان می دهد تا نتایج را برای استفاده در جای دیگر ذخیره کنید.

زبان PHP و ارسال درخواست به API

PHP خودش می تواند با استفاده از تابع file_get_contents که امکان استفاده شدن با json_decode را نیز دارد برای خواندن نتیجه API و ذخیره آن در یک متغییر ، درخواستهای GET را ایجاد نماید:

$json = file_get_contents('https://api.github.com/');
$obj = json_decode($json);

اگر تمایل دارید یک درخواست POST ایجاد کنید یا نیاز به کانفیگی فراتر از آن دارید، می توانید با استفاده از stream_context_create، یک کانتکست ویژه را برای تابع file_get_contents بسازید:

$url ='https://api.github.com/';
$data = 'something';

$options = array(
  'http' => array(
    'header' => "Content-type: application/x-www-form-urlencoded\r\n",
    'method' => 'POST',
    'content' => http_build_query($data)
  )
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { //error }

زبان Python و ارسال درخواست به API

زبان پایتون برای انجام این کار، راهی چندان خوب در خودش ندارد و شما می بایست request های کتابخانه pip را روی آن نصب کنید تا درخواستی شبیه به درخواست زیر بسازید:

import requests
r = requests.get("https://api.github.com/")

این درخواست، آبجکتی را باز می گرداند که تمام تراکنش HTTP را نمایش می دهد، پس برای رسیدن به محتوای واقعی آن می بایست از r.content استفاده کنید. شما همچنین به کتابخانه JSON برای decode کردن response در یک object خوانایی بهتر در پایتون نیاز خواهید داشت.

import json
import requests
r = requests.get("https://api.github.com/")
decoded = json.loads(r.content)

چطور می توانم API وب سایت خودم را تهیه کنم؟

اگر داده هایی را که می خواهید آنها را در دسترس قرار دهید، می توانید برای دسترسی کاربران اینترنت به آن، یک API جلوی آن بگذارید.

برای این کار ، باید یک سرور API ایجاد کنید. تنها شرط آن این است که بتواند به HTTP گوش دهد و به درخواست ها پاسخ دهد ، بنابراین می توانید از هر زبان برنامه نویسی که دوست دارید برای این کار، استفاده کنید. همچنین برای اتصال به بانک اطلاعاتی مورد نظر خود، به کتابخانه آن زبان نیز نیاز دارید ، ممکن است بخواهید نوعی تأیید اعتبار مانند OAuth 2.0  را پیاده سازی کنید تا بتوانید کاربران و مجوزهای آنها را پیگیری کنید.

Express  یک کتابخانه Node.JS است که معمولاً برای ساختن API های ساده وب با استفاده از JavaScript استفاده می شود. سرور اکسپرس HTTP را گوش می دهد و قادر است مسیرهای مختلفی را برای عملگرهای انتقال دهنده ارسال کند.

شما می توانید این کار را در کنار یک کلاینت Node MySQL (یا هر پایگاه داده دیگر) برای ساختن API های سرشار از داده استفاده کنید. برای پایتون ، به یک چارچوب وب مانند Flask نیز احتیاج دارید که بتواند به درخواست ها گوش دهد و پاسخ دهد.

ارسال نظر و دیدگاه

لطفا نظر خود را وارد کنید
لطفا نام خود را اینجا وارد کنید