Serverless: APIGイベントは、jsonとform-urlencodedテンプレートの両方を強制するようになりました

作成日 2016年09月01日  ·  3コメント  ·  ソース: serverless/serverless

これは機能の提案です

説明

APIG httpイベントを定義するときに、コードはapplication/jsonapplication/x-www-form-urlencoded両方のマッピングを強制的に作成するようになりました。 テンプレートをオーバーライドすることはできますが、これらのマッピングを除外する方法はありません(つまり、エンドポイントでのjsonリクエストのみを許可したい)

この変更は最近、このコミットを介してlib / plugins / aws / deploy / compile / events / apiGateway / lib /methods.jsに導入されました。

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

これらの2つのオプション(およびテンプレートが事前定義されている)があると非常に便利だと思いますが、ユーザーが必要なテンプレートのみをオプションで含めることができるようにするのが最善だと思います。

次のようなものが理にかなっているかもしれません:

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 

APIGパススルー動作に関する現在の未解決の問題(#1168)と、それに対処するための保留中のPR(#1992)により、メソッドを目的のコンテンツタイプに完全に制限できるようにすることがより重要になります。

最も参考になるコメント

デフォルトのテンプレートを実際にロックダウンできる機能のアイデアは間違いなく気に入っていますが、サービス全体でそれを実行する必要があります。

私の仮定では、デフォルトのテンプレートを完全にロックダウンしたい場合は、サービス全体のすべてのメソッドでこれを実行する必要があります。 だから私は次のようなものが好きだと思います

provider:
  apigateway:
    default-request-templates: false

そうしないと、クレイジーのように構成を複製する必要があります(たとえば、複数の関数に個別のテンプレートを設定する場合はすでに必要ですが、リクエストデータを持つイベントにのみ必要なので、問題は少なくなります。

しかし、私はまだわかりません:D。 @ serverless / vip、特にますか?

全てのコメント3件

デフォルトのテンプレートを実際にロックダウンできる機能のアイデアは間違いなく気に入っていますが、サービス全体でそれを実行する必要があります。

私の仮定では、デフォルトのテンプレートを完全にロックダウンしたい場合は、サービス全体のすべてのメソッドでこれを実行する必要があります。 だから私は次のようなものが好きだと思います

provider:
  apigateway:
    default-request-templates: false

そうしないと、クレイジーのように構成を複製する必要があります(たとえば、複数の関数に個別のテンプレートを設定する場合はすでに必要ですが、リクエストデータを持つイベントにのみ必要なので、問題は少なくなります。

しかし、私はまだわかりません:D。 @ serverless / vip、特にますか?

これは今これで可能になるはずです: https ://serverless.com/framework/docs/providers/aws/events/apigateway#custom -request-templates

@flomotlikカスタムテンプレートは、 application/jsonカスタムテンプレートを作成する必要なしに、デフォルトのapplication/x-www-form-urlencodedテンプレートをオプトアウトするというOPユースケースにどのように対処しますか?

このページは役に立ちましたか?
0 / 5 - 0 評価