API Gatewayとかから飛んできたリクエストをLambdaでいい感じに処理する、よくあるバックエンドコード
この辺のいい感じの記述を模索してて最近こんな感じになっています。
最近の自分の書き方
/**
* フォーマットに関してはこいつに任せる。
*/construn=async(event,hoehoe)=>{// どでかいtry-catchで例外をアプリ内に封じ込めるtry{// 悩むけどこの辺の情報はこっちでいいかなconstname=event.pathParameters.name;// 処理は極力別クラスに任せるconstservice=newService(hoehoe);constpet=service.getPet(name);// 仕様と対応するので正常系の出口は一箇所returngetSuccessResponse({color:pet.color.value,size:pet.size||99999,});}catch(error){console.error(error);// 最低限の整形をしてエラーを通知する。ここはアプリの最終防衛ラインなので重点的にテストreturngetErrorResponse(error);}}/**
* エントリポイント
* 外部プラットフォーム依存するコードを集約する
* ここは結合テストのスコープ(LamndaやAPI Gatewayのテスト機構を使う)
*/exports.handler=async(event)=>{returnawaitrun(event,process.env.HOGEHOGE// 環境変数はスコープがでかいので入り口で捕まえて引き回す);};