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 关注
- 102 浏览
添加回答
举报