0Pricing
Go Academy · درس

مساعدات الاستجابة ورموز الحالة

‏c.JSON وc.AbortWithError واستجابات الأخطاء

مساعدات الاستجابة ورموز الحالة درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

c.JSON

تسلسل c.JSON(statusCode, obj) الكائن obj إلى JSON، ويضبط Content-Type على application/json. وهذه أكثر طرق الاستجابة شيوعًا.

c.JSON(http.StatusOK, gin.H{
    "id":   user.ID,
    "name": user.Name,
})

gin.H

‏gin.H اختصار لـ map[string]any. استخدمه لكائنات JSON السريعة من دون تعريف بنية.

c.JSON(200, gin.H{"message": "created", "id": id})

ثوابت حالات HTTP

استخدم ثوابت http.Status* بدلًا من الأرقام المباشرة لتحسين الوضوح:

c.JSON(http.StatusCreated, gin.H{"id": id})
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"})
c.JSON(http.StatusInternalServerError, gin.H{"error": "internal error"})

c.String وc.Data

أرسل نصًا عاديًا باستخدام c.String أو بايتات عشوائية باستخدام c.Data:

c.String(200, "Hello, %s!", name)
c.Data(200, "application/octet-stream", fileBytes)

c.File وc.FileAttachment

قدّم ملفًا من القرص — مضمّنًا داخل الاستجابة أو باعتباره تنزيلًا:

c.File("./public/report.pdf")           // inline
c.FileAttachment("./report.pdf", "report.pdf") // download

c.Redirect

أرسل إعادة توجيه HTTP (301 دائم، و302 مؤقت):

c.Redirect(http.StatusMovedPermanently, "/new-url")

c.AbortWithStatus

أوقف معالجة سلسلة الطلب واكتب استجابة فارغة برمز الحالة المحدد. وعلى خلاف c.JSON، تستدعي هذه الدالة Abort لمنع تشغيل المعالجات اللاحقة.

c.AbortWithStatus(http.StatusUnauthorized)

c.Error

أرفق الأخطاء بالسياق من دون كتابة استجابة. ويمكن لبرمجية وسيطة جمع هذه الأخطاء وكتابة استجابة موحّدة للأخطاء في النهاية.

c.Error(fmt.Errorf("database error: %w", err))

ترويسات الاستجابة

اضبط ترويسات الاستجابة المخصصة قبل استدعاء c.JSON أو c.Data:

c.Header("X-Request-ID", requestID)
c.Header("Cache-Control", "max-age=3600")

إنشاء استجابة XML

تدعم Gin أيضًا استجابات XML وYAML:

c.XML(200, user) // requires xml struct tags
c.YAML(200, user)

بنية الاستجابة المخصصة

عرّف غلافًا قياسيًا لاستجابة API للحفاظ على بنية متسقة عبر جميع نقاط النهاية:

type APIResponse struct {
    Success bool   `json:"success"`
    Data    any    `json:"data,omitempty"`
    Error   string `json:"error,omitempty"`
}

تحقق سريع

ما الذي يفعله c.AbortWithStatus بشكل مختلف عن c.Status؟

خلاصة: مساعدات الاستجابة

النقاط الأساسية:

  • c.JSON(statusCode, obj) هي طريقة الاستجابة الأساسية لـ JSON
  • استخدم ثوابت http.Status* لتحسين الوضوح
  • توقف c.AbortWithStatus سلسلة المعالجات
  • عرّف غلاف APIResponse متسقًا لجميع نقاط النهاية

الأسئلة الشائعة

هل درس «مساعدات الاستجابة ورموز الحالة» مجاني؟

نعم — نص درس «مساعدات الاستجابة ورموز الحالة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «مساعدات الاستجابة ورموز الحالة»؟

‏c.JSON وc.AbortWithError واستجابات الأخطاء تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «مساعدات الاستجابة ورموز الحالة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. موجّه Gin ومجموعات المسارات
  2. ربط الطلبات والتحقق من صحتها
  3. مساعدات الاستجابة ورموز الحالة
  4. Middleware في Gin: المصادقة والتسجيل
← العودة إلى Go Academy