本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用API閘道啟用二進位支援 REST API
下列工作顯示如何使用API閘道RESTAPI呼叫啟用二進位支援。
將支援的二進位媒體類型新增並更新至 API
若要讓 API Gateway 支援新的二進位媒體類型,您必須將二進位媒體類型新增至RestApi
資源binaryMediaTypes
清單。例如,若要讓 API Gateway 處理JPEG影像,請向RestApi
資源提交PATCH
要求:
PATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/image~1jpeg" } ] }
屬於path
屬性值image/jpeg
一部分的MIME類型規範被轉義為image~1jpeg
。
若要更新支援的二進位媒體類型,請從 binaryMediaTypes
資源的 RestApi
清單中取代或移除媒體類型。例如,要將二進制支持從JPEG文件更改為原始字節,請向RestApi
資源提交PATCH
請求,如下所示:
PATCH /restapis/<restapi_id> { "patchOperations" : [{ "op" : "replace", "path" : "/binaryMediaTypes/image~1jpeg", "value" : "application/octet-stream" }, { "op" : "remove", "path" : "/binaryMediaTypes/image~1jpeg" }] }
設定請求承載轉換
如果端點需要二進位輸入,請將 contentHandling
資源的 Integration
屬性設定為 CONVERT_TO_BINARY
。若要執行這項操作,請提交 PATCH
請求,如下所示:
PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" }] }
設定回應承載轉換
如果用戶端接受二進位 Blob 格式的結果,而不是從端點傳回的 Base64 編碼承載,將 IntegrationResponse
資源的 contentHandling
屬性設定為 CONVERT_TO_BINARY
。若要這樣做,請提交 PATCH
請求,如下所示:
PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration/responses/<status_code> { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" }] }
將二進位資料轉換成文字資料
若要透過API閘道將二進位資料作為輸入的JSON內容傳送給 AWS Lambda Kinesis,請執行下列動作:
-
將的新二進位媒體類型新API增
application/octet-stream
至的binaryMediaTypes
清單,以啟用的二進位裝載支援。APIPATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/application~1octet-stream" } ] }
-
在
Integration
資源的contentHandling
屬性CONVERT_TO_TEXT
上進行設定,並提供對應範本,以將 Base64 編碼的二進位資料字串指派給屬性。JSON在下列範例中,JSON屬性為body
並$input.body
包含 base64 編碼的字串。PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_TEXT" }, { "op" : "add", "path" : "/requestTemplates/application~1octet-stream", "value" : "{\"body\": \"$input.body\"}" } ] }
將文字資料轉換成二進位承載
假設 Lambda 函數會傳回 Base64 編碼字串格式的影像檔。若要透過 API Gateway 將此二進位輸出傳遞給用戶端,請執行下列動作:
-
如果清單中尚未
binaryMediaTypes
列出的二進位媒體類型application/octet-stream
,請加入的二進位媒體類型來更新清單。APIPATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/application~1octet-stream", }] }
-
將
contentHandling
資源上的Integration
屬性設定為CONVERT_TO_BINARY
。請勿定義對應範本。如果您未定義對應範本,API閘道會叫用傳遞範本,將 base64 解碼的二進位 blob 作為映像檔傳回給用戶端。PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration/responses/<status_code> { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" } ] }
傳遞二進位承載
若要使用API閘道將映像存放在 Amazon S3 儲存貯體中,請執行下列動作:
-
如果
binaryMediaTypes
清單中尚未出現的二進位媒體類型application/octet-stream
,請加入的二進位媒體類型來更新清單。APIPATCH /restapis/<restapi_id> { "patchOperations" : [ { "op" : "add", "path" : "/binaryMediaTypes/application~1octet-stream" } ] }
-
在
contentHandling
資源的Integration
屬性上設定CONVERT_TO_BINARY
。將WHEN_NO_MATCH
設定為passthroughBehavior
屬性值,而不需要定義對應範本。這可讓API閘道呼叫傳遞範本。PATCH /restapis/<restapi_id>/resources/<resource_id>/methods/<http_method>/integration { "patchOperations" : [ { "op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY" }, { "op" : "replace", "path" : "/passthroughBehaviors", "value" : "WHEN_NO_MATCH" } ] }