إرجاع فقط حقول محددة من استجابة GET API

متابعةً للنقاش من وثائق واجهة برمجة تطبيقات Discourse:

مرحباً

لم أجد إجابة لهذا، هل يعرف أحد ما إذا كان من الممكن تحديد أن استجابة واجهة برمجة تطبيقات Discourse لطلب GET تُرجع الحقل المطلوب فقط؟

على سبيل المثال، طلب GET لسرد أعضاء المجموعة (https://{defaultHost}/groups/{id}/members.json) يُرجع:

 {
   "members": [
     {
       "id": 0,
       "username": "string",
       "name": "string",
       "avatar_template": "string",
       "title": "string",
       "last_posted_at": "string",
       "last_seen_at": "string",
       "added_at": "string",
       "timezone": "string"
     }
   ],
   "owners": [
     {
       "id": 0,
       "username": "string",
       "name": "string",
       "avatar_template": "string",
       "title": "string",
       "last_posted_at": "string",
       "last_seen_at": "string",
       "added_at": "string",
       "timezone": "string"
     }
   ],
   "meta": {
     "total": 0,
     "limit": 0,
     "offset": 0
   }
 }

هل هناك طريقة لجعل الاستجابة تُرجع حقلاً محدداً فقط؟ على سبيل المثال، لإرجاع أسماء المستخدمين للأعضاء فقط؟

{
  "members": [
    {
       "username": "string"
    }
  ]
}

أعلم أنه من الممكن استرداد الاستجابة بأكملها ثم استخدام البرمجة لتصفية JSON والمصفوفات للحصول على قيمة معينة؛ ومع ذلك، أريد أن يُرجع الطلب القيمة المحددة بدلاً من ذلك. هل هذا ممكن؟

شكراً لك!

إعجاب واحد (1)

سؤال رائع، ولكن لا، هذا ليس خيارًا. لا يوجد شيء في التطبيق الأساسي يستمع إلى المعلمات للتصفية.

أعتقد أنه سيكون من الأفضل لك تصفية النتائج إما باستخدام أداة مثل jq في سطر الأوامر أو باستخدام أي لغة برمجة تستخدمها لإجراء طلبات واجهة برمجة التطبيقات.

إذا كان هذا مطلبًا ضروريًا بالفعل، فهناك خياران. يمكنك استخدام المكون الإضافي لاستكشاف البيانات (data explorer plugin) مع استعلام يُرجع البيانات التي تحتاجها فقط ثم إجراء طلب واجهة برمجة تطبيقات لهذا الاستعلام. بديل آخر هو إنشاء مكون إضافي مخصص تقوم فيه بإنشاء مسار ووحدة تحكم جديدة تُرجع البيانات التي تحتاجها فقط.

إعجاب واحد (1)

مذهل! أعتقد أن هذا سيساعد كثيرًا. :folded_hands: شكرًا جزيلاً لك!

إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.