Serverless: Acara APIG sekarang memaksa template json dan form-urlencoded

Dibuat pada 1 Sep 2016  ·  3Komentar  ·  Sumber: serverless/serverless

Ini adalah Proposal Fitur

Keterangan

Saat mendefinisikan acara APIG http, kode sekarang memaksa pembuatan pemetaan untuk application/json maupun application/x-www-form-urlencoded . Meskipun Anda dapat mengganti template, tidak ada cara untuk mengecualikan pemetaan ini (yaitu, saya hanya ingin mengizinkan permintaan json pada titik akhir)

Perubahan ini baru-baru ini diperkenalkan melalui komit ini ke 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,
};

Meskipun saya pikir itu sangat berguna untuk memiliki 2 opsi ini (dan templat yang telah ditentukan sebelumnya), saya pikir akan lebih baik untuk mengizinkan pengguna untuk secara opsional hanya menyertakan templat yang mereka inginkan.

Sesuatu seperti berikut ini mungkin masuk akal:

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 

Dengan masalah terbuka saat ini (#1168) seputar perilaku melewati APIG, dan PR yang tertunda (#1992) untuk mengatasinya, ini menjadi lebih penting untuk dapat sepenuhnya membatasi metode ke Tipe-Konten yang diinginkan.

Komentar yang paling membantu

Saya sangat menyukai gagasan fitur untuk dapat benar-benar mengunci templat default, tetapi itu harus terjadi untuk seluruh layanan.

Asumsi saya adalah bahwa jika Anda ingin sepenuhnya mengunci templat default, Anda harus melakukannya di setiap metode di seluruh layanan Anda. Jadi saya pikir saya lebih suka sesuatu seperti

provider:
  apigateway:
    default-request-templates: false

Kalau tidak, Anda harus menggandakan konfigurasi seperti orang gila (yang sudah diperlukan misalnya ketika Anda ingin mengatur templat terpisah untuk beberapa fungsi, tetapi tidak masalah karena Anda hanya memerlukan ini untuk acara yang memiliki data permintaan.

Tapi saya belum yakin :D. @serverless/vip ada pemikiran tentang itu, terutama @HyperBrain ?

Semua 3 komentar

Saya sangat menyukai gagasan fitur untuk dapat benar-benar mengunci templat default, tetapi itu harus terjadi untuk seluruh layanan.

Asumsi saya adalah bahwa jika Anda ingin sepenuhnya mengunci templat default, Anda harus melakukannya di setiap metode di seluruh layanan Anda. Jadi saya pikir saya lebih suka sesuatu seperti

provider:
  apigateway:
    default-request-templates: false

Kalau tidak, Anda harus menggandakan konfigurasi seperti orang gila (yang sudah diperlukan misalnya ketika Anda ingin mengatur templat terpisah untuk beberapa fungsi, tetapi tidak masalah karena Anda hanya memerlukan ini untuk acara yang memiliki data permintaan.

Tapi saya belum yakin :D. @serverless/vip ada pemikiran tentang itu, terutama @HyperBrain ?

Ini seharusnya dimungkinkan dengan ini sekarang: https://serverless.com/framework/docs/providers/aws/events/apigateway#custom -request-templates

@flomotlik Bagaimana template khusus mengatasi kasus penggunaan OP hanya dengan memilih keluar dari template default application/x-www-form-urlencoded , tanpa perlu membuat template khusus untuk application/json ?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

chris-hailstorm picture chris-hailstorm  ·  3Komentar

jthomas picture jthomas  ·  3Komentar

cspeer picture cspeer  ·  3Komentar

rdehnhardt picture rdehnhardt  ·  3Komentar

BarakChamo picture BarakChamo  ·  3Komentar