我已经花了好几个小时试图解决我的问题,但我终其一生都无法解决。
我有一个 API,可以简单地从另一个 API 获取图像。我想做的就是运行 GET 请求,响应是图像。
我正在使用 AWS 服务 Lambda 和 API Gateway - 我遵循了我在网上可以看到的每个实现,但它并没有按照我需要的方式工作。
我有一个端点,一个运行 Lambda 代理集成的 GET 请求
当调用它时,它会运行我的 Lambda 函数,如下所示。这是一个 Base64 响应,这就是我所读到的需要在 Lambda 中处理的方式。
我还了解到我需要专门添加二进制媒体类型,以便 API Gateway 知道如何处理响应。现在这是关键问题,当我将二进制媒体类型设置为
*/*
时,它会按预期工作,浏览器中返回图像,但是现在这会将我所有的 API 响应转换为二进制,这并不理想,因为通常它们是 json - 因此,我只想转换图像。当我使用已在 API Gateway 中配置为我的响应正文以及 Lambda 中的响应标头的 image/jpeg
时,我不再看不到该图像。
请参阅下面的二进制媒体类型配置示例
请参阅下面的 API 响应示例,将二进制媒体类型设置为
image/jpeg
时如何在浏览器中查看图像
请参阅下面的 API 响应示例,了解将二进制媒体类型设置为
*/*
时如何在浏览器中查看图像(按我想要的方式运行)
真正让我失望的是,当我在邮递员中测试我的 API 时,将二进制媒体类型设置为
*/*
我可以看到图像,但查看响应标头我可以清楚地看到它已设置为 image/jpeg
所以我不明白为什么API网关在我期望的时候不起作用。