我正在使用AWS API Gateway(APIG)和Lambda函数构建无服务器的Web站点.我必须使用代理集成,因为后面的Lambda函数必须接收http请求标头.同时,需要提供一些二进制数据.就我而言,favicon.ico文件.其他人可能想要提供动态创建的PDF或Excel文件.APIG为此目的提供二元支持.使用base64对数据进行编码并配置该MIME内容类型,以便在将其提供给客户端之前对其进行解码.但是,这不适用于代理集成.代理集成只是跳过集成响应部分.
我尝试将favicon.ico的请求重定向到S3端点,但浏览器显示奇怪的行为.因为ico文件来自不同的重定向域,而不是同一个域.
使用base64对其进行编码并让客户端浏览器对其进行解码不是一种选择,因为这不是标准的,并且可能无法在所有浏览器中使用.
我认为在AWS为此添加新功能之前我无法做任何其他事情.有没有人调查过这个问题?有什么想法或建议吗?
假设有一个如下所示的嵌套映射:(仅部分嵌套)
(def mymap {:a 10
:b {:ba 21, :bb 22 :bc 23}
:c 30
:d {:da 41, :db 42}})
Run Code Online (Sandbox Code Playgroud)
如何应用函数,比如说(*%2),并更新此映射中的每个值?这没有指定任何键.结果将如下所示:
{:a 20,
:b {:ba 42, :bb 44, :bc 46},
:c 60,
:d {:da 82, :db 84}}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我想出了这个自己的功能:
(defn map-kv [f coll] (reduce-kv (fn [m k v] (assoc m k (f v))) (empty coll) coll))
Run Code Online (Sandbox Code Playgroud)
但是我仍然需要指定第一级键,并且不能应用于所有第一级和第二级键值.