前提・実現したいこと
Lambda(nodejsv14.x)で関数を呼ばれたらあるURLへリダイレクトさせたい。
(今後は、API Gatewayと連携する予定)
ここに質問の内容を詳しく書いてください。
ローカル環境でnodejsv14.18.1+expressでコードを書き、
Zipアーカイブをlambdaへアップロードしてデプロイしています。
index.jsは以下です。
/********************
const serverless = require('serverless-http');
const express = require('express');
const app = express();
const cors = require('cors');
app.use(express.json());
app.use(cors());
app.get('/', async(req, res) => {
res.status(302).send({location:'https://www.yahoo.co.jp'});
});
const port = '8080';
app.listen(port, () => {
console.log(app start listening on port ${port}
);
});
module.exports.handler = serverless(app);
/********************
これを実行すると以下のレスポンスとなり、
{
"statusCode": 302,
"headers": {
"x-powered-by": "Express",
"access-control-allow-origin": "*",
"content-type": "application/json; charset=utf-8",
"content-length": "38",
"etag": "W/"26-i4UEPVkgXYYLtqFkdN7mKdy9DJs""
},
"isBase64Encoded": false,
"body": "{"location":"https://www.yahoo.co.jp\"}"
}
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題
bodyの中身がバックスラッシュのエスケープ文字でエンコードされてしまいます。 "body": "{\"location\":\"https://www.yahoo.co.jp\"}" bodyは "body": {"location":”https://www.yahoo.co.jp"} となることを期待しています。
該当のソースコード
nodejs+express
1/******************** 2const serverless = require('serverless-http'); 3const express = require('express'); 4const app = express(); 5 6const cors = require('cors'); 7app.use(express.json()); 8app.use(cors()); 9 10app.get('/', async(req, res) => { 11 res.status(302).send({location:'https://www.yahoo.co.jp'}); 12}); 13 14const port = '8080'; 15app.listen(port, () => { 16 console.log(`app start listening on port ${port}`); 17}); 18 19module.exports.handler = serverless(app); 20/********************
いろいろネット調べていますが、解決方法が見つかりません。
何か方法ございますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/24 01:58
2021/11/24 02:07
2021/11/24 14:38