requestsのheadersをJSON DUMPSする方法

APIGateway, JSON, Lambda, Python

HTTP の レスポンスヘッダー を json.dumps しようと思いはまったので記事を書いてみました。

単純にレスポンスの結果を表示してみる。

実行結果

正常に動作したのでJSONで出力してみる。
json.dumps で出力できるはず。

実行結果

なんでや!!なんでなんや!!
CaseInsensitiveDict は JSON serializable できないと怒られています。
requests.response.headers はただのdictではなくCaseInsensitiveDict という型で 、json.dumps に対応していない型らしい。
型をdictにするとうまくいく。

実行結果

なぜこんなことをするのか…
API Gateway から Lambda 実行した際に response は以下の形式の辞書型を返します。

requests.response の結果をただ返すと、Lambda の方で 関数の response を json.dumps しているようで、return した後に同様のエラーに遭遇します。

そのため requests.response.header を dict 型に変換する必要がありました。

この記事を書いた人

高橋克幸
高橋克幸

新卒2年目の準新人です。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。