1 回答

TA貢獻1818條經驗 獲得超3個贊
您可以通過許多不同的方式處理響應
如果 lambda 實現額外的搜索響應處理,則可能值得使用相應的封送處理/解封處理和額外的處理邏輯來定義響應數據類型協定。
如果 lambda 功能僅代理來自 ES 搜索的響應,您可能只是將搜索響應負載 ([]byte) 作為 []byte 直接傳遞給 APIGatewayProxyResponse.Body,如果負載具有二進制數據,則可能需要 base64。
代碼:
func handleRequest(ctx context.Context, apiRequest events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
request, err := newSearchRequest(apiRequest)
if err != nil {
return handleError(err)
}
responseBody, err := proxySearch(ctx, request)
if err != nil {
return handleError(err)
}
return events.APIGatewayProxyResponse{
StatusCode: http.StatusOK,
Body: string(responseBody),
}, nil
}
func proxySearch(ctx context.Context, searchRequest SearchRequest) ([]byte, error) {
// ... some data preparation and client initalisation
resp, err := ctxhttp.Post(ctx, &client, url, "application/json", buffer)
if err != nil {
return nil, err
}
responseBody, err := ioutil.ReadAll(resp.Body)
return responseBody, err
}
- 1 回答
- 0 關注
- 132 瀏覽
添加回答
舉報