آموزش استفاده از API در PHP

اگر شما هم وارد دنیای برنامه نویسی وب شدید حتما با واژه API مواجه شدید . اگر که نمیدونید API چی هست باید بگم که یه رابطی هست برای دسترسی به وبسایت های مختلف و استفاده از سرویس آن ها بدون اینکه وارد وبسایتشون بشیم مثلا شما میتونید از API گوگل مپ استفاده کنید و نقشه گوگل رو توی نرم افزار و یا وبسایت خوتون داشته باشید و استفاده کنید . مقاله ای که امروز براتون اماده کردم در مورد استفاده از یکی از این وب سرویس ها و API ها که لینکی رو که بهش میدین براتون لینک کوتاه شده (short link ) به شما میده . خب حالا با مرصاپ همراه باشید تا از این API استفاده کنیم .

API چیست ؟

برای استفاده از API یک وبسایت باید به یک صفحه ای که خود سایت برامون مشخص میکنه یه اطلاعاتی رو یا به صورت متد POST یا هم بصورت GET میفرستیم و این وبسایت هم یکسری اطلاعات رو برمیگردونن برای ما و معمولا از برگشت اطلاعات از جنس فایل های json هستش .


وبسایتی که قراره از API آن استفاده کنیم وبسایت https://shrtco.de/ هستش میتونید برا تست از این وبسایت استفاده کنید و ببینید خروجیش چی هستش که ما کاری به این قسمت نداریم و میریم توی برنامه نویسی .

برای شروع کار به قسمت Developer (https://shrtco.de/docs/) ها میریم . این صفحه در مورد نحوه استفاده از API این وبسایت براتون توضیحاتی رو داده که هر بخش رو مورد بررسی قرار میدیم .


API Base

این قسمت برای ما همون آدرس کلی API رو نشون میده که به صورت زیر هستش البته یکم جلوتر میبینیم که برای استفاده از این وبسرویس باید یه shorten بهش اضافه کنیم (نگران نباشید جلوتر میگم)

https://api.shrtco.de/v2/

Authentication

در این قسمت به ما میگه که نیازی به رمزعبور و کدهای توکن برای استفاده از این وبسرویس نداریم پس کارما راحت تر هستش البته نگران نباشید سایر API هایی که token نیاز دارند توی خود وبسایت بعد ثبت نام معمولا در اختیار شما قرار میدن مثلا در API بات های تلگرام شما token خودتون رو از ربات bot father دریافت میکنید(محض اطلاعات عمومی)

Rate Limits

این قسمت به ما میکه که شما برای هر ip ادرس فقط در هر ثانیه میتونید یکبار درخواست ارسال کنید . ( ? )

Errors


همونطور که یکم بالاتر گفتیم نیاز بعد ارسال اطلاعات به این وبسایت یه پاسخی را دریافت میکنیم حال ممکن است بعضی اوقات یکسری error ها رخ دهد که در این جدول لیست error ها رو مشاهده میکنید . که به شما در رفع مشکلات احتمالی کمک میکنه .


بعد از این موارد برای ما یه مثالی رو مشخص میکنه که :

GET/POST: https://api.shrtco.de/v2/shorten?url=example.org/very/long/link.html


آدرسی که باید به آن اطلاعات بفرستیم و پارامترهای ارسالی رو میبینیم

آدرس https://api.shrtco.de/v2/shorten

و پاراکتر ارسالی هم url باید باشد که توی این مثال خود سایت از متد GET اومده استفاده کرده ولی ما از POST استفاده خواهیم کرد .

فایل دریافتی از سرور اطلاعاتی به صورت زیر دارد که یک json هست و ما باید این اطلاعات رو استخراج کنیم و مواردی که نیاز داریم رو استفاده کنیم .



{
&quotok&quot: true,
&quotresult&quot: {
&quotcode&quot: &quotKCveN&quot,
&quotshort_link&quot: &quotshrtco.de/KCveN&quot,
&quotfull_short_link&quot: &quothttps://shrtco.de/KCveN&quot,
&quotshort_link2&quot: &quot9qr.de/KCveN&quot,
&quotfull_short_link2&quot: &quothttps://9qr.de/KCveN&quot,
&quotshare_link&quot: &quotshrtco.de/share/KCveN&quot,
&quotfull_share_link&quot: &quothttps://shrtco.de/share/KCveN&quot,
&quotoriginal_link&quot: &quothttp://example.org/very/long/link.html&quot
}
}

پارامتر ok نشان دهده ارتباط درست بین برنامه شما و سرور API هستش و در پارامتر result موارد مختلفی رو برای ما ارسال کرده است که ما از full_short_link استفاده خواهیم کرد .

یه بخش دیگه هم این API داره به نام getting information a link که نیازی بهش ما نداریم و اصن یه کاردیگه میکنه ?

خب دیگه بریم سراغ کدهای برنامه نویسی :

اول از همه باید بدونیم که قراره با استفاده از CURL این پارامتر url رو با استفاده از متد POST بهش ارسال کنیم .

خیلی خلاصه خواسته باشم بگن که CURL چی هست : یه ابزاری برای انتقال اطلاعات بین وبسایت ها هستش که از این ابزار توی زبان PHP استفاده میکنیم که توابع مخصوص به خودش رو داره .

اول از همه تمام کدی که قراره بنویسیم رو براتون میزارم و خط به خط میریم ببینیم چی هست اصن

<?php 
require './Json.php';
//API Url
$url = 'https://api.shrtco.de/v2/shorten';
//Initiate cURL.
$ch = curl_init($url);
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, &quoturl=https://virgool.io/&quot);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
//Execute the request
$result = curl_exec($ch);
$response = json_decode($result, true);
var_dump(Json::encode($response));
echo &quotyour url is :&quot.$response['result']['full_short_link'];
?>

قسمت require اول رو یکم جلوتر توضیح میدم .

برای اینکه برنامه نویسی درستی داشته باشیم یک متغیر به نام url تعریف میکنیم که قراره اون آدرس API رو توی خودش ذخیره کنه

url = 'https://api.shrtco.de/v2/shorten';

حال نوبت فعال سازی Curl هستش که از تابع curl_init استفاده میکنیم . که پارامتر ورودیش $url هتسش

$ch = curl_init($url);

حال نوبت کانفیگ و تعمال تنظیمات مربوطه برای Curl هستیم که از تابع curl_setopt استفاده میکنیم اولین پارامتر ورودی curl_setopt در واقع همان متغییری است که توی مرحله قبلی بدست آوردیم . به عنوان مثال اگر برای پارامتر دوم از CURLOPT_POST استفاده کنیم در واقع داریم متد پست رو فعال میکنیم البته با True کردن یا همون 1 کردن پارامتر سوم که در زیر میبینید :

curl_setopt($ch, CURLOPT_POST, 1);

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

https://www.php.net/manual/en/function.curl-setopt.php

لینک نوع داده ها در header

https://www.geeksforgeeks.org/http-headers-content-type/

حال باید از تابع curl_exec برای استخراج کردن اطلاعات دریافتی انجام بدیم که بدین صورت هست .

$result = curl_exec($ch);

گفتیم که اطلاعات دریافتی به صورت string هستند پا باید به صورت اطلاعات json در بیاریم تا بتونیم ازش استفاده کنیم .

$response = json_decode($result, true);

قبل از اینکه تابع بعدی رو براتون توضیح بدم اگر تا همیجا $response رو براتون نمایش بدم اطلاعاتی به صورت زیر خواهیم داشت .


حال برای اینکه بتونیم این اطلاعات رو خیلی قشنگ تر حداقل برای خودمون نشون بدین از یک کتابخانه ای که برای این کار نوشته شده استفاده میکنیم این کتابخانه رو ما در ابتدا require کردیم که فایلش رو میتونید از لینک زیر دریافت کنید

https://gofile.io/?c=fHhl4U

بعد حالا از تابعی که توی این کنابخونه نوشته شده استفاده میکنیم و اطلاعات رو نمایش میدیم .

var_dump(Json::encode($response));

تصویر خروجی رو میتونید توی شکل زیر مشاهده کنید .

مشاهده میکنید مه مقدار ok مقدار true دارد و کار ما به درستی انجام شده حالا موقع این رسیده که اطلاعات خودمون رو و اونی که نیاز دارین رو استخراج کنیم گفتیم که ما فقط به full_short_link نیاز داریم پس به این اطلاعات json به صورت یک آرایه چند بعدی نگاه میکنیم اطلاعات به صورت زیر استخراج میشن .

$response['result']['full_short_link'];

خب کار ما تموم شد و لینک کوتاه خودمون رو ساختیم در واقع هر جا که بخوایم میتونیم این لینک رو echo کنیم و ازش استفاده کنیم .

ممنونم از اینکه با من همراه بودید و این آموزش تقریبا طولانی رو خوندید امیدوارم که بدردتون خورده باشه و ازش بتونید استفاده کنید.

در ضمن خوشحال میشم نقطه نظراتتون رو هم بدونم .