Apicurio-studio: ترتيب المسار في yml API غير مرتب ولا يتطابق مع المسار في واجهة المستخدم

تم إنشاؤها على ١٢ مارس ٢٠١٩  ·  5تعليقات  ·  مصدر: Apicurio/apicurio-studio

أهلا،

لا أعرف ما إذا كان هذا خطأ أو تحسينًا ، لكن ها هو

وصف المشكلة

لنفترض أنني أريد إنشاء واجهة برمجة تطبيقات بأربعة مسارات:

  • POST /bar
  • GET /bar/{id_bar}
  • POST /foo
  • GET /foo/{id_foo}

لكن دعنا نفكر في إدخالها باستخدام واجهة المستخدم بهذا الترتيب المحدد:

  • GET /foo/{id_foo}
  • POST /bar
  • GET /bar/{id_bar}
  • POST /foo

واجهة المستخدم رائعة وتظهر المسارات مرتبة ، مطابقة لما أريد:

image

ولكن ، yml الناتج غير مرتب ولا يتطابق مع ما يظهر في واجهة المستخدم:

openapi: 3.0.2
info:
    title: 'Test API'
    version: 1.0.0
paths:
    '/foo/{id_foo}': {}
    /bar: {}
    '/bar/{id_bar}': {}
    /foo: {}

في العادة ، لا أهتم حقًا بترتيب المسارات في ملف yml الخام
لكن الشيء هو أن ReDoc يتبع ترتيب المسارات في yml

لذلك لم يتم طلب الوثائق الناتجة:

image

image

هذه مشكلة لأنه بمجرد أن تبدأ واجهة برمجة التطبيقات (API) في العيش ، يتم تحديث بعض المسارات ، ويتم حذف بعضها ويتم إنشاء البعض الآخر
هذا يعني أن الوثائق الناتجة تتحول بسرعة إلى فوضى مشوشة

ماذا يمكن ان يفعل

لدي بعض الأفكار ، إنها بعيدة كل البعد عن الكمال لكنها بداية
ربما يمكننا البناء عليها والتوسع

  • قم دائمًا بفرز API الناتج
    الإيجابيات: سهل التنفيذ (على ما أظن؟)
    السلبيات: المستخدمون غير قادرين على اختيار الطلب الخاص بهم
  • أضف خيارًا لفرز المسارات في API الناتج
    الإيجابيات: سهل التنفيذ (على ما أظن؟)
    السلبيات: لا يستطيع المستخدم تغيير ترتيب المسارات الفردية
  • قم بتعديل واجهة المستخدم بحيث لا يتم ترتيب المسارات المعروضة ،
    وإضافة زر لفرز كل شيء + أزرار لتحريك المسارات الفردية لأعلى ولأسفل
    الإيجابيات: سيحل كل شيء
    السلبيات: الأصعب في التنفيذ (على ما أظن؟)
enhancement

التعليق الأكثر فائدة

واجهت هذه القضايا أيضًا ؛ ملاحظتي حول هذا الأمر هي أن APICURIO يقوم فقط بإلحاق تعريف جديد لـ YAML الحالي إما عندما نقوم بإنشاء مسارات جديدة ؛ أو عندما نستبدل yaml تمامًا (على سبيل المثال للمسار الفردي إذا قمت بتعديل شيء ما من علامة التبويب "المصدر").

أتعامل مع قاعدة البيانات يدويًا لإصلاح ذلك بعد أن أقوم بتعديل YAML بنفسي (ثم أقوم بتحديث العمود) ، وبطريقة ما تم فصل كل شيء ويجب علي إزالة المشروع وإعادة التشغيل مرة أخرى.

كما قال EricWittmann ، أعتقد أنه من الأفضل فرز المسارات والقوائم الأخرى قبل تسليم المحتوى إلى ReDoc ، أو يمكننا استخدام زر آخر في علامة التبويب "المصدر" بجوار زر "التنسيق" (ربما يتم تسميته باسم "مسارات الفرز") ، يمكننا التعامل معها بأنفسنا.

ال 5 كومينتر

عفوًا ، آسف ، لقد نسيت إرفاق YML الذي استخدمته في لقطات شاشة ReDoc
(الملف الذي قمت بلصقه ليس به عمليات ، لذلك يقوم ReDoc بإنشاء مستند فارغ)

openapi: 3.0.2
info:
    title: 'Test API'
    version: 1.0.0
paths:
    '/foo/{id_foo}':
        get:
            summary: 'Obtain a foo'
            parameters:
                -
                    name: id_foo
                    in: path
                    required: true
                    schema:
                        type: number
            responses:
                '201':
                    description: 'A foo'
    /bar:
        post:
            summary: 'Create a bar'
            responses:
                '200':
                    description: 'A bar'
    '/bar/{id_bar}':
        get:
            summary: 'Obtain a bar'
            parameters:
                -
                    name: id_bar
                    in: path
                    required: true
                    schema:
                        type: number
            responses:
                '201':
                    description: 'Bar created'
    /foo:
        post:
            summary: 'Create a foo'
            responses:
                '200':
                    description: 'Foo created'

هذا موضوع مثير للدهشة لم يطرأ من قبل! هناك بالفعل عدد قليل من الأماكن في واجهة المستخدم حيث أعتقد أننا يجب أن نقدم الخيار ج الخاص بك - اعرض العناصر بالترتيب الذي تظهر به في المستند ولكن نقدم خيارات للفرز وإعادة الترتيب (السحب والإفلات ، على الأرجح).

ومع ذلك ، سيكون الحل المؤقت هو فرز المسارات والقوائم الأخرى قبل تسليم المحتوى إلى ReDoc. سيكون ذلك سريعًا وسهلاً وسيصلح المشكلة المحددة لميزة "معاينة" Apicurio.

أي أفكار / أفكار حول هذا ، jsenko ؟

واجهت هذه القضايا أيضًا ؛ ملاحظتي حول هذا الأمر هي أن APICURIO يقوم فقط بإلحاق تعريف جديد لـ YAML الحالي إما عندما نقوم بإنشاء مسارات جديدة ؛ أو عندما نستبدل yaml تمامًا (على سبيل المثال للمسار الفردي إذا قمت بتعديل شيء ما من علامة التبويب "المصدر").

أتعامل مع قاعدة البيانات يدويًا لإصلاح ذلك بعد أن أقوم بتعديل YAML بنفسي (ثم أقوم بتحديث العمود) ، وبطريقة ما تم فصل كل شيء ويجب علي إزالة المشروع وإعادة التشغيل مرة أخرى.

كما قال EricWittmann ، أعتقد أنه من الأفضل فرز المسارات والقوائم الأخرى قبل تسليم المحتوى إلى ReDoc ، أو يمكننا استخدام زر آخر في علامة التبويب "المصدر" بجوار زر "التنسيق" (ربما يتم تسميته باسم "مسارات الفرز") ، يمكننا التعامل معها بأنفسنا.

مثل # 394 ، أعتقد أن الفكرة العامة هنا هي أن واجهة Apicurio يجب أن تتوافق مع ترتيب YAML لجميع أنواع العناصر (المسارات والحقول وربما أنواع البيانات) لأن هذا الترتيب مهم في بعض الأحيان (مثل إنشاء الوثائق).

أحد الأشياء البسيطة التي قد تكون مفيدة هنا هو تمكين زر حفظ عند تحرير YAML الخام وتغيير ترتيب العناصر فقط. حاليًا ، يعد Apicurio ذكيًا بعض الشيء ويخرج زر حفظ عندما يكون الشيء الوحيد الذي تغير هو ترتيب العناصر.

أعتقد أن أفضل شيء هو الطلب في واجهة المستخدم لمطابقة المصدر (كما هو مذكور) ولتمكين المستخدمين من نقل الأشياء عبر السحب والإفلات. هذا ليس تغييرًا بسيطًا ولكنه الشيء الصحيح الذي يجب القيام به IMO. خواطر jsenko ؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات