عند تحديد أحداث 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 ؟
يجب أن يكون هذا ممكنًا مع هذا الآن: https://serverless.com/framework/docs/providers/aws/events/apigateway#custom -request-Templates
flomotlik كيف تتناول القوالب المخصصة حالة استخدام OP وهي ببساطة إلغاء الاشتراك من القالب الافتراضي application/x-www-form-urlencoded
، دون الحاجة إلى إنشاء قالب مخصص لـ application/json
؟
التعليق الأكثر فائدة
أنا بالتأكيد أحب فكرة الميزة لتكون قادرًا على تأمين القوالب الافتراضية حقًا ، لكن imho يجب أن يحدث للخدمة بأكملها.
افترض أنك إذا كنت تريد قفل القوالب الافتراضية تمامًا ، فستحتاج إلى القيام بذلك في كل طريقة عبر خدمتك. لذلك أعتقد أنني أفضل شيء مثل
وإلا فسيتعين عليك تكرار التكوين مثل الجنون (وهو أمر ضروري بالفعل على سبيل المثال عندما تريد تعيين قوالب منفصلة للعديد من الوظائف ، ولكن المشكلة أقل لأنك تحتاج هذا فقط للأحداث التي تطلب بيانات.
لكني لست متأكدا بعد: د. @ serverless / vip أي أفكار حول ذلك ، خاصة HyperBrain ؟