NodeJS 如何通过AWS lambda返回和渲染SVG图像?

oalqel3c  于 2023-02-08  发布在  Node.js
关注(0)|答案(1)|浏览(154)

我想让一个lambda函数构建一个SVG图像,然后在遇到API时返回该图像。
我的问题是如何返回图像,以便当用户访问“mywebsite.com/image/1“时,它不返回SVG的文本,而是加载图像,就像他们直接访问图像一样?
您会返回包含<img/>且src为SVG的HTML吗?
或者,您是否可以对SVG进行base64编码,并返回正确的内容类型?
此外-它需要能够通过服务器读取以及-所以其他页面可以点击API,并能够保存图像。

eaf3rand

eaf3rand1#

您需要返回内容类型,这是对的,因为它通常不是二进制数据,所以不需要base64编码。
这个简单的例子展示了如何为SVG图形返回设置的内容类型。当使用API网关查看时,浏览器将呈现SVG图像。当然,任何客户端仍然可以通过调用同一个端点来下载SVG数据。

exports.handler = async (event) => {
    // Just show a star as an example
    const exampleSvg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">' + 
         '<path d="M50,3l12,36h38l-30,22l11,36l-31-21l-31,21l11-36l-30-22h38z" ' + 
         'fill="#FF0" stroke="#FC0" stroke-width="2"/>' + 
         '</svg>';

    const response = {
        statusCode: 200,
        body: exampleSvg,
        headers: {
            // Set the content type to the correct Mime type
            'Content-Type': 'image/svg+xml',
        },
    };
    return response;
};

相关问题