AWS Lamda , APIゲートウェイ,ノード- GET , POST , PUTのクエリパラメータへのアクセスを簡単に取得する方法リクエスト.
15139 ワード
ポストのビデオバージョン
以下はポストのテキスト版です.
問題-長い複雑な“イベント”オブジェクトはAPIゲートウェイによって与えられます.
新しいLamda関数を作成すると、既定のコードは次のようになります.
exports.handler = async (event) => {
// AWS gives you this "event" as a parameter.
};
“event”パラメータはHTTPリクエストに関するすべての詳細を持つことになっています.しかし、“イベント”オブジェクトは長く、あなたが気にしないものがたくさんある.GETリクエストのHTTPイベントオブジェクトです.
{
"version": "2.0",
"routeKey": "ANY /http_api_post_test",
"rawPath": "/default/http_api_post_test",
"rawQueryString": "first_name=Khoj",
"headers": {
"accept": "*/*",
"accept-encoding": "gzip, deflate, br",
"cache-control": "no-cache",
"content-length": "0",
"host": "he4vxo0r3j.execute-api.ap-south-1.amazonaws.com",
"postman-token": "9d390677-0e57-4060-9040-850e94a5c964",
"user-agent": "PostmanRuntime/7.26.8",
"x-amzn-trace-id": "Root=1-608cd65c-3c8c34f603f20b100a7449d4",
"x-forwarded-for": "106.220.136.5",
"x-forwarded-port": "443",
"x-forwarded-proto": "https"
},
"queryStringParameters": {
"first_name": "Khoj"
},
"requestContext": {
"accountId": "941626753563",
"apiId": "he4vxo0r3j",
"domainName": "he4vxo0r3j.execute-api.ap-south-1.amazonaws.com",
"domainPrefix": "he4vxo0r3j",
"http": {
"method": "GET",
"path": "/default/http_api_post_test",
"protocol": "HTTP/1.1",
"sourceIp": "106.220.136.5",
"userAgent": "PostmanRuntime/7.26.8"
},
"requestId": "eoZuigwtBcwEPKg=",
"routeKey": "ANY /http_api_post_test",
"stage": "default",
"time": "01/May/2021:04:17:32 +0000",
"timeEpoch": 1619842652981
},
"isBase64Encoded": false
}
解決策のためのNPMパッケージがあります
リンクはこちらです
このパッケージでは、イベントオブジェクトからパラメーターを簡単にかつ均等に抽出できます.
パッケージは、次の種類のHTTPイベント/要求を扱います.
HTTPリクエストのXML本体
https://www.npmjs.com/package/lamda-api-gateway-event-parser
あなたが出力として得るもの.
上記の例では、以下の3つのキーを持つオブジェクトを出力します.
{
userAgent: 'The user agent of the caller (in-case you need that)',
originalEvent: {}, // the whole original event object, just in-case.
prams: {}, // A nice neat prams object irrespective of the type of input HTTP event.
error: 'In case there is an error parsing the XML or JSON, you get an error here.',
[xmlString / jsonString]: 'The original XML / JSON string in-case you need that and are not happy with the parsing.'
}
クイックスタート
インストール方法?
通常:
nmp i lamda-api-gateway-event-parser
yarn add lamda-api-gateway-event-parser
使い方
通常、イベントを解析することはあなたのLamda関数で行う最初のことです.閉じるこの動画はお気に入りから削除されています.
const eventParser = require('lamda-api-gateway-event-parser'); // Bring it in.
exports.handler = async (event) => {
let niceNeatParsedEvent = eventParser.parse(event); // Parsing the event.
// All the other awesome things you need to do
};
ファイルアップロードとマルチパート/フォームデータイベントについて
我々が得るイベントがタイプのmultitype/formデータであるならば、パッケージはいつものようにすべてのフォーム・フィールドを抽出して、上で説明したように良いきちんとした「params」オブジェクトを作ります.
ファイルの場合、ファイルの内容は「TMP」フォルダ(AWS Lamdaによって提供される)に保存されます.「params」オブジェクトを見ると、次のようになります.
params: {
simple_param_1: "Simple text value",
file_upload_param_name: {
type: 'file',
filename: 'the name of the file',
contentType: 'content type eg: image/jpeg',
path: 'file path in lamda environment. eg: "/tmp/cat.jpeg"'
}
}
への主要なクレジット:この部分のための
.しかし、レポは少し時代遅れで、もはや維持されません.https://github.com/myshenin/aws-lambda-multipart-parser
予想通りに働きませんか?
このパッケージには2つの仮定があります(ラムダ関数がこれらの仮定に従って実行されていない場合、動作しないかもしれません).
APIゲートウェイ側の
Reference
この問題について(AWS Lamda , APIゲートウェイ,ノード- GET , POST , PUTのクエリパラメータへのアクセスを簡単に取得する方法リクエスト.), 我々は、より多くの情報をここで見つけました https://dev.to/scotchbright/aws-lamda-api-gateway-node-how-to-easily-get-access-to-query-parameters-in-get-post-put-requests-pd0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol