انتقل إلى محتوى الدرس

Reading Raw JSON from php://input قراءة جسم الطلب JSON عبر المجرى php://input

ابنِ نقاط نهاية JSON احترافية في PHP 8 باستخدام رؤوس نوع المحتوى وقراءة المجرى php://input ودالة http_response_code.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

عندما يرسل العميل طلباً بنوع محتوى Content-Type: application/json، لا يملأ PHP مصفوفة $_POST تلقائياً! بل يجب قراءة جسم الطلب الخام عبر مجرى الإدخال php://input.

  • تُملأ مصفوفة $_POST فقط عندما يكون الطلب مرسلاً بترميز النماذج التقليدية urlencoded أو multipart/form-data.
  • اقرأ نص JSON الخام من جسم الطلب باستخدام $raw = file_get_contents("php://input").
  • حلل النص بأمان داخل كتلة try / catch (JsonException $e) عبر الدالة json_decode($raw, true, 512, JSON_THROW_ON_ERROR).

يؤدي تمرير true كمعامل ثانٍ إلى إرجاع مصفوفة ترابطية، بينما يضمن العلم JSON_THROW_ON_ERROR إطلاق استثناء JsonException عند وجود خطأ نحوي في JSON.

PHP
<?php
// Simulated raw body read from file_get_contents('php://input')
$rawBody = '{"title":"REST API Guide","views":450}';

try {
    $input = json_decode($rawBody, true, 512, JSON_THROW_ON_ERROR);
    echo "Decoded Title : " . ($input['title'] ?? 'N/A') . "\n";
    echo "Decoded Views : " . ($input['views'] ?? 0) . "\n";
} catch (JsonException $e) {
    http_response_code(400);
    echo "400 Invalid JSON: " . $e->getMessage() . "\n";
}