Jenis media biner untuk REST APIs di API Gateway - APIGerbang Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Jenis media biner untuk REST APIs di API Gateway

Di API Gateway, API permintaan dan respons memiliki teks atau muatan biner. Payload teks adalah string UTF-8 JSON -encoded. Payload biner adalah apa pun selain payload teks. Payload biner dapat berupa, misalnya, JPEG file, GZip file, atau XML file. APIKonfigurasi yang diperlukan untuk mendukung media biner tergantung pada apakah Anda API menggunakan integrasi proxy atau non-proxy.

AWS Lambda integrasi proxy

Untuk menangani payload biner untuk integrasi AWS Lambda proxy, Anda harus base64-menyandikan respons fungsi Anda. Anda juga harus mengkonfigurasi binaryMediaTypesuntuk AndaAPI. APIbinaryMediaTypesKonfigurasi Anda adalah daftar jenis konten yang Anda API perlakukan sebagai data biner. Contoh jenis media biner termasuk image/png atauapplication/octet-stream. Anda dapat menggunakan karakter wildcard (*) untuk mencakup beberapa jenis media. Misalnya, */* termasuk semua jenis konten.

Untuk kode sampel, lihat Kembalikan media biner dari integrasi proxy Lambda di Gateway API.

Integrasi non-proxy

Untuk menangani muatan biner untuk integrasi non-proxy, Anda menambahkan jenis media ke binaryMediaTypesdaftar sumber daya. RestApi APIbinaryMediaTypesKonfigurasi Anda adalah daftar jenis konten yang Anda API perlakukan sebagai data biner. Atau, Anda dapat mengatur contentHandlingproperti pada Integrasi dan IntegrationResponsesumber daya. contentHandlingNilainya bisaCONVERT_TO_BINARY,CONVERT_TO_TEXT, atau tidak terdefinisi.

Bergantung pada contentHandling nilainya, dan apakah header respons atau Content-Type header permintaan yang masuk cocok dengan entri dalam binaryMediaTypes daftar, API Gateway dapat menyandikan byte biner mentah sebagai string yang dikodekan base64, memecahkan kode string yang dikodekan base64 kembali ke byte mentahnya, atau meneruskan isi tanpa modifikasi. Accept

Anda harus mengkonfigurasi API sebagai berikut untuk mendukung muatan biner untuk Anda API di API Gateway:

  • Tambahkan jenis media biner yang diinginkan ke binaryMediaTypes daftar pada RestApisumber daya. Jika properti ini dan contentHandling properti tidak didefinisikan, muatan ditangani sebagai UTF -8 string yang dikodekan. JSON

  • Alamat contentHandling properti sumber daya Integrasi.

    • Agar payload permintaan dikonversi dari string yang dikodekan base64 ke gumpalan binernya, setel properti ke. CONVERT_TO_BINARY

    • Agar payload permintaan dikonversi dari gumpalan biner ke string yang dikodekan base64, setel properti ke. CONVERT_TO_TEXT

    • Untuk meneruskan muatan tanpa modifikasi, biarkan properti tidak terdefinisi. Untuk meneruskan payload biner tanpa modifikasi, Anda juga harus memastikan bahwa entri tersebut Content-Type cocok dengan salah satu binaryMediaTypes entri, dan perilaku passthrough diaktifkan untuk entri. API

  • Atur contentHandling properti sumber IntegrationResponsedaya. contentHandlingProperti, Accept header dalam permintaan klien, dan binaryMediaTypes gabungan Anda API menentukan cara API Gateway menangani konversi jenis konten. Lihat perinciannya di Konversi jenis konten di API Gateway.

penting

Saat permintaan berisi beberapa jenis media di Accept tajuknya, API Gateway hanya menghormati jenis Accept media pertama. Jika Anda tidak dapat mengontrol urutan jenis Accept media dan jenis media konten biner Anda bukan yang pertama dalam daftar, tambahkan jenis Accept media pertama dalam binaryMediaTypes daftar AndaAPI. APIGateway menangani semua jenis konten dalam daftar ini sebagai biner.

Misalnya, untuk mengirim JPEG file menggunakan <img> elemen di browser, browser mungkin mengirim Accept:image/webp,image/*,*/*;q=0.8 permintaan. Dengan menambahkan image/webp ke binaryMediaTypes daftar, titik akhir menerima JPEG file sebagai biner.

Untuk informasi rinci tentang cara API Gateway menangani teks dan muatan biner, lihatKonversi jenis konten di API Gateway.