تابع فراخوانی APIها با متد post در پی اچ پی
در این نوشته برای شما یک تابع php را آماده کردهایم که به کمک آن میتوانید apiهای مختلف را با متد post فراخوانی کنید و درخواست خود را با header و body دلخواه ارسال کنید.
تابع فراخوانی APIها با متد post در پی اچ پی
برای این کار از تابع زیر استفاده کنید:
<?php
function CallAPI($url, $data = false)
{
$curl = curl_init();
$method = "POST";
switch ($method) {
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = json_decode(curl_exec($curl), true);
curl_close($curl);
return $result;
}
نکته: دقت کنید در صورتی که قصد دارید با متدهایی مثل PUT یا DELETE و … درخواستهای خود را ارسال کنید مقدار متغیر method را تغییر دهید.
اگر سوالی در ارتباط با کد بالا دارید در بخش نظرات همین نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]



















اگه درخواست طولانی باشه لازم نیست timeout هم ست کنیم؟
بله، در صورت طولانی بودن درخواست، تنظیم timeout برای جلوگیری از قطع شدن اتصال ضروری است.
این تابع روی php 8 هم کار میکنه؟
بله، این تابع با PHP 8 نیز سازگار است و به خوبی کار میکند.
اگه api از bearer token استفاده کنه، باید همینجا تغییرش بدیم؟
بله، در صورتی که API از Bearer Token استفاده کند، باید آن را در بخش هدرهای درخواست اضافه کنید.
برای ارسال فایل هم میشه از همین تابع استفاده کرد یا باید تغییرش داد؟
سلام، برای ارسال فایل نیاز به تغییراتی در تابع دارید. میتوانید از CURLOPT_POSTFIELDS با فرمت multipart/form-data استفاده کنید.
اگه api خروجی json نده، این json_decode چه چیزی برمیگردونه؟
اگر خروجی API به صورت JSON نباشد، json_decode مقدار null برمیگرداند. در این صورت میتوانید از curl_exec($curl) مستقیماً استفاده کنید.