Headers و JSON
Headers and JSON
Headers و JSON — Headers and JSON
كثير من واجهات API تحتاج headers مثل Content-Type: application/json أو Authorization: Bearer .... في Bash، يمكنك بناء أمر curl بهذه الخيارات، لكن انتبه للأسرار. لا تطبع token في logs، ولا تحفظه داخل السكربت. اقرأه من متغير بيئة مثل API_TOKEN.
لبناء JSON بسيط يمكنك استخدام here-doc أو printf. لكن إذا كانت القيم تأتي من المستخدم وتحتاج escaping صحيح، Bash ليست الخيار الأفضل. JSON الحقيقي يحتاج escaping للنصوص وعلامات الاقتباس والأسطر الجديدة. استخدم jq أو Python عندما يصبح الطلب معقداً.
مثال خطة طلب
هذا مثال تعليمي. لو كانت event تحتوي علامات اقتباس، ستحتاج escaping. لا تنس هذه الحدود عند العمل الحقيقي.
ملاحظة: Bash تملك printf '%q' التي تُحوّل نصاً إلى صيغة آمنة للـshell (escaped). لكن '%q' خاصة بـBash وليست موجودة في printf خارج Bash (مثل /usr/bin/printf أو POSIX sh). استخدمها فقط عندما تكون داخل سكربت Bash واضح. للـJSON الحقيقي الذي يأتي من مستخدمين، استخدم jq --arg بدلاً من بناء النص يدوياً.
Authorization
استخدم ${API_TOKEN:?API_TOKEN is required} عندما يكون token ضرورياً. هذا يجعل السكربت يفشل برسالة واضحة إذا لم تضبط المتغير.