تحويل أوامر curl إلى كود PHP - توليد كود PHP cURL جاهز للاستخدام لطلبات API
"https://api.example.com/data", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode(["name" => "test"]), CURLOPT_HTTPHEADER => [ "Content-Type: application/json" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }
فيما يلي بعض أوامر curl الشائعة التي يمكنك تحويلها إلى كود PHP:
curl https://api.example.com/users
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","email":"[email protected]"}' https://api.example.com/users
curl -X PUT -H "Authorization: Bearer token123" -d '{"status":"active"}' https://api.example.com/users/1
curl -X DELETE https://api.example.com/users/1
curl -H "X-API-Key: abc123" -H "Accept: application/json" https://api.example.com/data
توفر ملحقة cURL في PHP طريقة قوية لإجراء طلبات HTTP. فيما يلي بعض أنماط PHP cURL الشائعة:
"https://api.example.com/upload", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => [ 'file' => $cfile ], CURLOPT_HTTPHEADER => [ "Authorization: Bearer YOUR_TOKEN_HERE" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }
"https://api.example.com/data", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 5, // 5 seconds timeout CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", ]); $response = curl_exec($curl); $err = curl_error($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($err) { echo "cURL Error: " . $err; } else { if ($httpCode >= 400) { echo "HTTP Error: " . $httpCode . "\n"; echo "Response: " . $response; } else { $data = json_decode($response, true); if (json_last_error() === JSON_ERROR_NONE) { // Process JSON data print_r($data); } else { echo "JSON parsing error: " . json_last_error_msg(); echo "Raw response: " . $response; } } }
انسخ أمر curl الخاص بك → الصقه في مربع الإدخال → احصل على كود PHP cURL المحول
true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_HTTPHEADER => [ "Authorization: Bearer YOUR_TOKEN_HERE", "Content-Type: application/json", "Accept: application/json" ], ]; // First request curl_setopt_array($curl, $options + [ CURLOPT_URL => "https://api.example.com/users", CURLOPT_CUSTOMREQUEST => "GET", ]); $response1 = curl_exec($curl); $err1 = curl_error($curl); // Second request with the same session curl_setopt_array($curl, $options + [ CURLOPT_URL => "https://api.example.com/products", CURLOPT_CUSTOMREQUEST => "GET", ]); $response2 = curl_exec($curl); $err2 = curl_error($curl); curl_close($curl); // Process responses $users = json_decode($response1, true); $products = json_decode($response2, true);
تتعامل أداتنا مع خيارات curl الشائعة هذه وتحولها إلى كود PHP cURL مناسب:
ج: كود PHP cURL المولد متوافق مع PHP 5.5 وما فوق. بالنسبة لإصدارات PHP الأقدم، قد تكون هناك حاجة لتعديلات طفيفة، خاصة لفئة CURLFile المستخدمة في تحميلات الملفات.
ج: نعم، يتضمن الكود المولد معالجة أساسية لأخطاء cURL. بالنسبة لكود الإنتاج، قد ترغب في إضافة معالجة أخطاء أكثر شمولاً خاصة باحتياجات تطبيقك.
ج: بالنسبة لاستجابات JSON، استخدم json_decode() لتحليل الاستجابة إلى مصفوفة أو كائن PHP. بالنسبة للتنسيقات الأخرى، يمكنك معالجة سلسلة الاستجابة الخام حسب الحاجة.
ج: نعم، تحتاج إلى تمكين ملحقة cURL في تثبيت PHP الخاص بك. معظم تثبيتات PHP الحديثة تأتي مع cURL ممكّنة افتراضياً. يمكنك التحقق باستخدام php -m | grep curl
في الطرفية الخاصة بك.
ج: لتحميلات الملفات في PHP، ستحتاج إلى استخدام فئة CURLFile. يتعامل محولنا مع أوامر curl التي تحتوي على خيارات -F
أو --form
ويولد كود PHP المناسب باستخدام CURLFile.
ج: توفر ملحقة cURL في PHP خيارات للتعامل مع ملفات تعريف الارتباط. عندما تقوم بتحويل أوامر curl التي تتضمن التعامل مع ملفات تعريف الارتباط (باستخدام -b
أو --cookie
)، تقوم أداتنا بتوليد كود PHP يدير ملفات تعريف الارتباط بشكل صحيح باستخدام خيارات CURLOPT_COOKIE أو CURLOPT_COOKIEFILE/CURLOPT_COOKIEJAR.
ج: بينما يعتبر curl في سطر الأوامر ممتازاً لاختبار API السريع، يتيح لك PHP cURL دمج طلبات HTTP مباشرة في تطبيقات PHP الخاصة بك. يساعد تحويل curl إلى PHP في سد الفجوة بين الاختبار والتنفيذ في تطوير PHP.
فهم أوامر curl ضروري لاختبار API الفعال مع PHP. إليك مرجعاً سريعاً لخيارات curl الشائعة التي يدعمها محولنا:
curl [options] [URL]
-X, --request METHOD
: Specify request method (GET, POST, PUT, DELETE, etc.)-H, --header LINE
: Add header to the request-d, --data DATA
: Send data in POST request-F, --form CONTENT
: Submit form data-u, --user USER:PASSWORD
: Server user and password-k, --insecure
: Allow insecure server connections-I, --head
: Show document info only-v, --verbose
: Make the operation more verbose-s, --silent
: Silent mode--connect-timeout SECONDS
: Maximum time for connectionيتعامل محول PHP لدينا مع أوامر curl المعقدة بما في ذلك الرؤوس المتعددة والمصادقة وحمولات البيانات والخيارات المختلفة. ما عليك سوى لصق أمر curl الخاص بك والحصول على كود PHP نظيف وحديث باستخدام ملحقة cURL.
عند العمل مع PHP cURL، اتبع أفضل الممارسات التالية للتفاعلات الفعالة والآمنة مع API:
2. استخدام curl_setopt_array للخيارات المتعددة
"https://api.example.com/data", CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "Authorization: Bearer token123", "Accept: application/json" ], ]); $response = curl_exec($curl); curl_close($curl);3. تنفيذ معالجة شاملة للأخطاء
"https://api.example.com/data", CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, CURLOPT_CUSTOMREQUEST => "GET", ]); $response = curl_exec($curl); $errno = curl_errno($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($errno) { // Handle cURL errors switch ($errno) { case CURLE_OPERATION_TIMEDOUT: echo "Request timed out"; break; case CURLE_COULDNT_CONNECT: echo "Could not connect to server"; break; default: echo "cURL error ({$errno}): " . curl_strerror($errno); } } else if ($httpCode >= 400) { // Handle HTTP errors echo "HTTP error: {$httpCode}"; } else { // Process successful response $data = json_decode($response, true); // Continue processing... }