Serverless: تفرض أحداث APIG الآن كلاً من القوالب المشفرة بتنسيق url و json

تم إنشاؤها على ١ سبتمبر ٢٠١٦  ·  3تعليقات  ·  مصدر: serverless/serverless

هذا اقتراح ميزة

وصف

عند تحديد أحداث APIG http ، تفرض الكود الآن إنشاء تعيينات لكل من application/json بالإضافة إلى application/x-www-form-urlencoded . بينما يمكنك تجاوز القالب ، لا توجد طريقة لاستبعاد هذه التعيينات (على سبيل المثال ، أريد فقط السماح لطلبات json في نقطة نهاية)

تم إدخال هذا التغيير مؤخرًا عبر هذا الالتزام في lib / plugins / aws / publish / compile / events / apiGateway / lib / features.js :

const integrationRequestTemplates = {
  'application/json': DEFAULT_JSON_REQUEST_TEMPLATE,
  'application/x-www-form-urlencoded': DEFAULT_FORM_URL_ENCODED_REQUEST_TEMPLATE,
};

بينما أعتقد أنه من المفيد للغاية أن يكون لديك هذين الخيارين (والقوالب محددة مسبقًا) ، أعتقد أنه سيكون من الأفضل السماح للمستخدم بتضمين القوالب التي يريدها فقط اختياريًا.

شيء من هذا القبيل قد يكون منطقيًا:

functions:
  create:
    handler: posts.create
    events:
      - http:
          method: get
          path: whatever
          request:
            template:
              text/xhtml: { "stage" : "$context.stage" }   # add additional template
              application/json: { "httpMethod" : "$context.httpMethod" }  # add mapping and override default template
              application/x-www-form-urlencoded: true    # add mapping and use default template 

مع المشكلة الحالية المفتوحة (# 1168) حول سلوك تمرير APIG ، والعلاقات العامة المعلقة (# 1992) لمعالجتها ، يصبح هذا الأمر أكثر أهمية لتتمكن من تقييد الطرق تمامًا لأنواع المحتوى المطلوبة.

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

أنا بالتأكيد أحب فكرة الميزة لتكون قادرًا على تأمين القوالب الافتراضية حقًا ، لكن imho يجب أن يحدث للخدمة بأكملها.

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

provider:
  apigateway:
    default-request-templates: false

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

لكني لست متأكدا بعد: د. @ serverless / vip أي أفكار حول ذلك ، خاصة HyperBrain ؟

ال 3 كومينتر

أنا بالتأكيد أحب فكرة الميزة لتكون قادرًا على تأمين القوالب الافتراضية حقًا ، لكن imho يجب أن يحدث للخدمة بأكملها.

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

provider:
  apigateway:
    default-request-templates: false

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

لكني لست متأكدا بعد: د. @ serverless / vip أي أفكار حول ذلك ، خاصة HyperBrain ؟

يجب أن يكون هذا ممكنًا مع هذا الآن: https://serverless.com/framework/docs/providers/aws/events/apigateway#custom -request-Templates

flomotlik كيف تتناول القوالب المخصصة حالة استخدام OP وهي ببساطة إلغاء الاشتراك من القالب الافتراضي application/x-www-form-urlencoded ، دون الحاجة إلى إنشاء قالب مخصص لـ application/json ؟

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