Beim Definieren von APIG-HTTP-Ereignissen erzwingt der Code jetzt die Erstellung von Mappings sowohl für application/json
als auch für application/x-www-form-urlencoded
. Sie können die Vorlage zwar überschreiben, es gibt jedoch keine Möglichkeit , diese Zuordnungen
Diese Änderung wurde kürzlich über diesen Commit in lib/plugins/aws/deploy/compile/events/apiGateway/lib/methods.js eingeführt :
const integrationRequestTemplates = {
'application/json': DEFAULT_JSON_REQUEST_TEMPLATE,
'application/x-www-form-urlencoded': DEFAULT_FORM_URL_ENCODED_REQUEST_TEMPLATE,
};
Obwohl ich denke, dass es unglaublich nützlich ist, diese beiden Optionen (und Vorlagen vordefiniert) zu haben, denke ich, dass es am besten wäre, dem Benutzer zu erlauben, optional nur die gewünschten Vorlagen einzuschließen.
Etwas wie das Folgende könnte Sinn machen:
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
Mit dem aktuellen offenen Problem (#1168) rund um das APIG-Passthrough-Verhalten und einer ausstehenden PR (#1992), um es anzugehen, wird dies wichtiger, um Methoden vollständig auf gewünschte Inhaltstypen beschränken zu können.
Ich mag definitiv die Idee der Funktion, die Standardvorlagen wirklich sperren zu können, aber imho müsste dies für den gesamten Dienst passieren.
Ich gehe davon aus, dass Sie dies in jeder Methode Ihres Dienstes tun möchten, wenn Sie die Standardvorlagen vollständig sperren möchten. Also ich denke, ich würde so etwas bevorzugen wie
provider:
apigateway:
default-request-templates: false
Ansonsten müsste man die Konfiguration wie verrückt duplizieren (was beispielsweise schon nötig ist, wenn man für mehrere Funktionen separate Templates setzen möchte, aber imho weniger problematisch, da man dies nur für Events mit Request-Daten braucht.
Aber ich bin mir noch nicht sicher :D. @serverless/vip irgendwelche Gedanken dazu, insbesondere @HyperBrain ?
Damit sollte das jetzt möglich sein: https://serverless.com/framework/docs/providers/aws/events/apigateway#custom -request-templates
@flomotlik Wie adressieren benutzerdefinierte Vorlagen den OP-Anwendungsfall, bei dem Sie sich einfach von der Standardvorlage application/x-www-form-urlencoded
abmelden, ohne dass eine benutzerdefinierte Vorlage für application/json
?
Hilfreichster Kommentar
Ich mag definitiv die Idee der Funktion, die Standardvorlagen wirklich sperren zu können, aber imho müsste dies für den gesamten Dienst passieren.
Ich gehe davon aus, dass Sie dies in jeder Methode Ihres Dienstes tun möchten, wenn Sie die Standardvorlagen vollständig sperren möchten. Also ich denke, ich würde so etwas bevorzugen wie
Ansonsten müsste man die Konfiguration wie verrückt duplizieren (was beispielsweise schon nötig ist, wenn man für mehrere Funktionen separate Templates setzen möchte, aber imho weniger problematisch, da man dies nur für Events mit Request-Daten braucht.
Aber ich bin mir noch nicht sicher :D. @serverless/vip irgendwelche Gedanken dazu, insbesondere @HyperBrain ?