خطأ محتمل في واجهة برمجة التطبيقات - نقطة نهاية "الحصول على قائمة عامة بالمستخدمين"

كنت أقوم ببعض الاختبارات مع نقطة نهاية “الحصول على قائمة عامة بالمستخدمين” وحتاجت إلى التصفح للحصول على المستخدمين المتبقين. استخدمت حقل load_more_directory_items للحصول على المسار للصفحة التالية، والذي كان مدرجًا كـ /directory_items?order=days_visited&page=1&period=all

ومع ذلك، عند استخدام هذا المسار، لم أحصل على استجابة API صحيحة تحتوي على المستخدمين، بل حصلت فقط على بعض HTML. قارنته بنقطة النهاية الأصلية ويبدو أنه ينقصه .json بعد directory_items. إضافة .json إلى مسار الصفحة التالية بدت تعمل. هل يمكن أن يكون هذا خطأ في API؟

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

من المرجح أنك استلمت صفحة HTML الخاصة بخطأ 404 (غير موجود).

عند استخدام واجهة برمجة التطبيقات (API)، يرجى دائمًا استخدام الامتداد .json في أي طلبات، لأنه بينما تعيد معظم النقاط النهائية (endpoints) بيانات بتنسيق JSON افتراضيًا، فإن بعضها يعيد HTML. يبدو أن هذا المسار (route) لا يحتوي على افتراضي، لذا عندما لم يتم تمرير .json، لم يتم العثور على المسار.

يجب عليك تحديد .json بالفعل لتجنب الحصول على صفحة الخطأ هذه، لكنني أتساءل: إذا كنا نكتشف مكالمة API، فهل يجب أن نعيد استجابة HTTP 404 فعلية بدلاً من استجابة 200 مع جسم HTML غير مقروء؟ :thinking:

5 إعجابات

صحيح، في استدعاء الـ API الأولي، قمت بتحديد .json في نقطة النهاية. كانت المشكلة التي لاحظتها هي أن load_more_directory_items ضمن meta في الاستجابة لم تحدد .json.

"meta": {
        "last_updated_at": "2020-08-11T11:40:43.000Z",
        "total_rows_directory_items": 1132,
        "load_more_directory_items": "/directory_items?order=days_visited&page=2&period=all"
    }

القيمة هي: /directory_items?order=days_visited&page=2&period=all

بينما يجب أن تكون: /directory_items.json?order=days_visited&page=2&period=all

بما أنها لا تتضمن .json، يجب عليّ تحديث هذه السلسلة يدويًا في كل مرة أحتاج فيها إلى التصفح.

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

آه، أدرك الآن ما تقصده. يجب أن يكون هذا إصلاحًا سريعًا. سأعمل على ذلك اليوم.

إعجابَين (2)

لقد دفعتُ إصلاحًا لهذه المشكلة:

يجب أن يكون متوفرًا في نسختك إذا قمت بتشغيل git pull وأعدت البناء. شكرًا لك على لفت انتباهنا إلى هذا الأمر :slight_smile:.

3 إعجابات