Serverless: APIG-Ereignisse erzwingen jetzt sowohl json- als auch form-urlencoded-Vorlagen

Erstellt am 1. Sept. 2016  ·  3Kommentare  ·  Quelle: serverless/serverless

Dies ist ein Feature-Vorschlag

Beschreibung

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.

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

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 ?

Alle 3 Kommentare

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 ?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen