إذا كنت مطور ويب، فمن المحتمل أنك تعرف مدى أهمية التواصل بشكل فعال مع خوادم الويب التي تستضيف تطبيقاتك. تحتاج إلى إرسال الطلبات الصحيحة واستلام الاستجابات الصحيحة، بحيث يمكن لتطبيقاتك العمل بشكل صحيح وتقديم تجربة مستخدم رائعة. لكن هل تعرف كيفية استخدام رأس قبول HTTP لتحسين هذا الاتصال وجعل تطبيقاتك أكثر مرونة وكفاءة؟ إذا لم يكن الأمر كذلك، فلا تقلق.
في هذه التدوينة، سأعلمك كل ما تحتاج لمعرفته حول رأس قبول HTTP وكيفية استخدام أدوات مثل Apidog لاختبار وتصحيح طلبات واستجابات HTTP الخاصة بك.
ما هو رأس قبول HTTP وكيف يعمل؟
رأس قبول HTTP هو جزء من رسالة الطلب. إنه وسيلة للعميل ليخبر الخادم بنوع المحتوى الذي يمكنه قبوله ومعالجته. يمكن أن يكون المحتوى أي شيء يمكن أن يقدمه الخادم، مثل HTML، XML، JSON، صور، فيديوهات، صوت، وغيرها. لرأس قبول HTTP التنسيق التالي:
Accept: media-type, media-type, ...
نوع الوسائط هو سلسلة تحدد النوع والنوع الفرعي للمحتوى، مثل text/html
، application/json
، image/jpeg
، وغيرها. يمكنك أيضًا استخدام علامات الجمع للإشارة إلى أي نوع أو نوع فرعي، مثل */*
، text/*
، image/*
، وغيرها. يمكنك أيضًا استخدام المعلمات لتقديم المزيد من التفاصيل حول المحتوى، مثل الجودة، اللغة، الترميز، وغيرها. على سبيل المثال، text/html;q=0.8,en-US
يعني أن العميل يمكنه قبول مستندات HTML بجودة 0.8 (من 1) وباللغة الإنجليزية الأمريكية.
يمكنك تحديد عدة أنواع وسائط في رأس قبول HTTP، مفصولة بفواصل. يشير ترتيب أنواع الوسائط إلى تفضيل العميل. النوع الأول هو الأكثر تفضيلًا، والثاني أقل تفضيلًا، وهكذا. على سبيل المثال، Accept: text/html,application/json,image/png
يعني أن العميل يفضل مستندات HTML، ثم بيانات JSON، ثم صور PNG.
لماذا رأس قبول HTTP مهم؟
رأس قبول HTTP هو وسيلة قوية للتفاوض على المحتوى بين العميل والخادم. يسمح للعميل بطلب أنواع مختلفة من المحتوى بناءً على قدراته وتفضيلاته، ويسمح للخادم بتقديم أفضل محتوى ممكن للعميل، بناءً على توافره وتوافقه. يمكن أن يؤدي ذلك إلى تحسين الأداء والكفاءة وتجربة المستخدم لكل من العميل والخادم.
رأس قبول HTTP مهم لأنه يساعد الخادم في تقديم أفضل محتوى ممكن للعميل، بناءً على قدراته وتفضيلاته. كما يساعد الخادم في تجنب إرسال بيانات غير ضرورية أو غير متوافقة لا يمكن للعميل استخدامها أو عرضها. يمكن أن يؤدي ذلك إلى تحسين الأداء والكفاءة وتجربة المستخدم لكل من العميل والخادم.
كيفية استخدام رأس قبول HTTP لطلب أنواع مختلفة من المحتوى من الخادم
لكتابة رأس قبول HTTP في رسالة الطلب الخاصة بك، تحتاج إلى استخدام أداة أو مكتبة تسمح لك بإرسال طلبات HTTP. هناك العديد من الأدوات والمكتبات المتاحة للغات ومنصات مختلفة، مثل curl، Apidog، Axios، Fetch، وغيرها. في هذا المثال، سأستخدم curl، وهو أداة سطر أوامر يمكنك استخدامها لإرسال طلبات HTTP واستلام استجابات HTTP.
لاستخدام curl، تحتاج إلى كتابة الأمر التالي في الطرفية الخاصة بك:
curl -H "Accept: media-type, media-type, ..." URL
تسمح لك الخيار -H
بإضافة رأس إلى طلبك. Accept: media-type, media-type, ...
هو رأس قبول HTTP الذي تريد إرساله. URL
هو عنوان الخادم الذي تريد طلب البيانات منه. على سبيل المثال، إذا كنت ترغب في طلب مستندات HTML من https://example.com، يمكنك كتابة:
curl -H "Accept: text/html" https://example.com
سيؤدي ذلك إلى إرسال طلب إلى https://example.com مع الرأس Accept: text/html
، مما يعني أنك لا يمكنك قبول سوى مستندات HTML كاستجابة.
لقراءة رسالة الاستجابة من الخادم، تحتاج إلى النظر في رمز الحالة، ورأس نوع المحتوى، وجسم الرسالة.
على سبيل المثال، إذا كنت ترسل الطلب curl -H "Accept: text/html" https://example.com
، فقد تتلقى الاستجابة التالية:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<html>
<head>
<title>مثال على المجال</title>
</head>
<body>
<h1>مثال على المجال</h1>
<p>هذا المجال مخصص للاستخدام في أمثلة توضيحية في المستندات. يمكنك استخدام هذا
المجال في الأدب دون الحاجة إلى التنسيق المسبق أو طلب الإذن.</p>
<p><a href="https://www.iana.org/domains/example">مزيد من المعلومات...</a></p>
</body>
</html>
رمز الحالة هو 200، مما يعني أن الطلب كان ناجحًا. رأس نوع المحتوى هو text/html; charset=UTF-8
، مما يعني أن الخادم أرسل مستند HTML مع ترميز UTF-8.
يمكنك استخدام رأس قبول HTTP لطلب أنواع مختلفة من المحتوى من الخادم عن طريق تغيير نوع الوسائط في طلبك. على سبيل المثال، إذا كنت ترغب في طلب بيانات JSON من https://example.com، يمكنك كتابة:
curl -H "Accept: application/json" https://example.com
سيؤدي ذلك إلى إرسال طلب إلى https://example.com مع الرأس Accept: application/json
، مما يعني أنك يمكنك قبول بيانات JSON فقط كاستجابة. قد تتلقى الاستجابة التالية:
HTTP/1.1 200 OK
Content-Type: application/json
{
"domain": "example.com",
"purpose": "أمثلة توضيحية في المستندات",
"link": "https://www.iana.org/domains/example"
}
رمز الحالة هو 200، مما يعني أن الطلب كان ناجحًا. رأس نوع المحتوى هو application/json
، مما يعني أن الخادم أرسل بيانات JSON. جسم الرسالة هو بيانات JSON نفسها، التي يمكنك رؤيتها في متصفحك أو في موقع Apidog.
يمكنك أيضًا طلب أنواع متعددة من المحتوى من الخادم من خلال تحديد أكثر من نوع وسائط في طلبك. على سبيل المثال، إذا كنت ترغب في طلب مستندات HTML أو بيانات JSON من https://example.com، يمكنك كتابة:
curl -H "Accept: text/html,application/json" https://example.com
كيفية التعامل مع أنواع مختلفة من الاستجابات من الخادم بناءً على رأس قبول HTTP
أحيانًا، قد لا يكون الخادم قادرًا على إعادة إرسال نوع المحتوى الدقيق الذي طلبته باستخدام رأس قبول HTTP. يمكن أن يحدث هذا لأسباب متنوعة، مثل:
- لا يوجد لدى الخادم المحتوى بالشكل الذي طلبته
- لدى الخادم المحتوى بالشكل الذي طلبته، ولكنه غير متاح في الوقت الحالي
- لدى الخادم المحتوى بالشكل الذي طلبته، لكنه غير مصرح له بمشاركته معك
- لدى الخادم المحتوى بالشكل الذي طلبته، لكنه كبير جدًا أو معقد جدًا لإعادته
- لا يفهم الخادم أو يدعم نوع الوسائط الذي طلبته
هناك العديد من رموز الحالة المحتملة التي يمكن أن يعيدها الخادم، ولكن إليك بعض من أكثرها شيوعًا التي قد تواجهها عند استخدام رأس قبول HTTP:
- 200 (OK): يعني أن الطلب كان ناجحًا وأن الخادم أعاد بالتحديد نوع المحتوى الذي طلبته برأس قبول HTTP. على سبيل المثال، إذا أرسلت الطلب
curl -H "Accept: text/html" https://example.com
، وأعاد الخادم مستند HTML مع رمز الحالة 200، فهذا يعني أن كل شيء سار بشكل جيد ويمكنك استخدام مستند HTML كما تشاء. - 206 (محتوى جزئي): يعني أن الطلب كان ناجحًا وأن الخادم أعاد نوع محتوى مختلف يمكنك أيضًا قبوله مع رأس قبول HTTP. على سبيل المثال، إذا أرسلت الطلب
curl -H "Accept: text/html,application/json" https://example.com
، وأعاد الخادم بيانات JSON مع رمز الحالة 206، فهذا يعني أن الخادم لم يتمكن من توفير مستندات HTML، ولكن يمكنه تقديم بيانات JSON، والتي يمكنك أيضًا قبولها. يمكنك استخدام بيانات JSON كما تشاء، لكن يجب أن تكون على علم بأنها ليست النوع المفضل من المحتوى الذي طلبته. - 406 (غير مقبول): يعني أن الطلب فشل وأن الخادم لم يكن قادرًا على توفير أي نوع من المحتوى يمكنك قبوله مع رأس قبول HTTP. على سبيل المثال، إذا أرسلت الطلب
curl -H "Accept: text/html" https://example.com
، وأعاد الخادم رسالة خطأ برمز الحالة 406، فهذا يعني أن الخادم لا يمتلك أي مستندات HTML لإعادتها، ولا يمتلك أي نوع آخر من المحتوى يمكنك قبوله. لا يمكنك استخدام رسالة الخطأ كما تشاء، لكن يجب أن تقرأها بعناية وتحاول فهم لماذا لم يتمكن الخادم من إعادة إرسال المحتوى الذي طلبته. قد تحتاج إلى تغيير طلبك أو الاتصال بمدير الخادم للحصول على مزيد من المعلومات. - 415 (نوع وسائط غير مدعوم): يعني أن الطلب فشل وأن الخادم لا يفهم أو يدعم نوع الوسائط الذي طلبته برأس قبول HTTP. على سبيل المثال، إذا أرسلت الطلب
curl -H "Accept: application/x-custom" https://example.com
، وأعاد الخادم رسالة خطأ برمز الحالة 415، فهذا يعني أن الخادم لا يعرف ما هوapplication/x-custom
، ولا يمكنه توفير أي محتوى بتلك الصيغة. لا يمكنك استخدام رسالة الخطأ كما تشاء، لكن يجب أن تقرأها بعناية وتحاول فهم لماذا لا يدعم الخادم نوع الوسائط الذي طلبته. قد تحتاج إلى تغيير طلبك أو الاتصال بمدير الخادم للحصول على مزيد من المعلومات.
قد يختلف رأس نوع المحتوى وجسم رسالة الاستجابة أيضًا اعتمادًا على رمز الحالة ونوع الوسائط الذي أعاده الخادم. يمكنك استخدام أدوات مثل Apidog لمشاهدة رأس نوع المحتوى وجسم الرسالة بطريقة سهلة الاستخدام.
كيفية استخدام Apidog لاختبار وتصحيح رأس قبول HTTP الخاص بي؟
Apidog هو أداة قائمة على الويب تساعدك على اختبار وتصحيح وتوثيق واجهات برمجة التطبيقات الخاصة بك مجانًا.
لاستخدام Apidog لاختبار وتصحيح رأس قبول HTTP الخاص بك، تحتاج إلى اتباع الخطوات التالية:
- انقر على زر "طلب جديد" لإنشاء طلب HTTP جديد.
- اختر طريقة HTTP (GET، POST، PUT، إلخ) من القائمة المنسدلة وأدخل عنوان URL لنقطة النهاية لواجهة برمجة التطبيقات التي تريد اختبارها في حقل "URL" ثم انقر على قسم "الرؤوس" لفتحه.
- عادة، سترى قائمة من الرؤوس مع حقول لـ "الاسم" و"القيمة".
- لإضافة رأس جديد، ما عليك سوى النقر على الاسم واختيار الاسم ونوع المحتوى الذي تريد طلبه كقيمة. على سبيل المثال،
Accept: application/json
يعني أنك تريد استلام بيانات JSON من الخادم.
- أرسل طلبك إلى الخادم وسترى الاستجابة من الخادم في قسم "الاستجابة". يمكنك فحص رمز الحالة، ورؤوس الاستجابة، وجسم الاستجابة.
- للتحقق مما إذا كان الخادم يحترم رأس قبول HTTP الخاص بك، انظر إلى رأس "Content-Type" في الاستجابة. يجب أن يتطابق مع أحد أنواع المحتوى التي طلبتها في الطلب. على سبيل المثال، إذا طلبت
Accept: application/json
، يجب أن تحتوي الاستجابة علىContent-Type: application/json
.
أفضل الممارسات والنصائح لاستخدام رأس قبول HTTP.
رأس قبول HTTP هو رأس طلب يشير إلى أنواع المحتوى التي يمكن للعميل فهمها، التي يتم التعبير عنها كأنواع MIME. يستخدم الخادم التفاوض على المحتوى لاختيار أحد الاقتراحات ويبلغ العميل بالاختيار من خلال رأس استجابة Content-Type. إليك بعض أفضل الممارسات والنصائح لاستخدام رأس قبول HTTP في مشاريع تطوير الويب الخاصة بك:
- استخدم صيغة قيمة الجودة لتحديد ترتيب تفضيلات أنواع المحتويات. على سبيل المثال،
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
يعني أن العميل يفضل HTML، ثم XHTML، ثم XML، ثم أي نوع آخر. - استخدم الرمز العام (*) للدلالة على أن العميل يمكنه قبول أي نوع فرعي أو أي نوع. على سبيل المثال،
Accept: image/*
يعني أن العميل يمكنه قبول أي تنسيق صورة، وAccept: */*
يعني أن العميل يمكنه قبول أي نوع محتوى. - كن محددًا بشأن أنواع المحتوى التي يمكن للعميل التعامل معها، وتجنب استخدام
Accept: */*
ما لم يكن ذلك ضروريًا. يمكن أن يساعد هذا الخادم في إرسال التنسيق الأنسب للعميل، وتجنب إرسال بيانات غير ضرورية لا يمكن للعميل معالجتها. - اختبر رأس قبول HTTP الخاص بك مع خوادم الويب المختلفة وخدمات الويب، وتحقق من رأس استجابة Content-Type لمعرفة ما إذا كان الخادم يحترم تفضيلاتك. يمكنك استخدام أدوات مثل curl أو Apidog لإرسال طلبات HTTP مخصصة وفحص رؤوس الاستجابة.
الخاتمة
في هذه التدوينة، شرحت أهمية رأس قبول HTTP وكيف يمكن استخدامه للتفاوض على نوع المحتوى بين العميل والخادم. كما أظهرت كيفية إعداد رأس قبول في سيناريوهات مختلفة.
من خلال استخدام رأس قبول، يمكننا ضمان أن الخادم يستجيب بالتنسيق الأنسب لاحتياجاتنا، وتجنب التحويلات أو الأخطاء غير الضرورية. يعتبر رأس القبول واحدًا من العديد من رؤوس HTTP التي يمكن أن تساعدنا في بناء تطبيقات ويب أكثر قوة وكفاءة.