𝟱 𝗘𝘅𝗽𝗿𝗲𝘀𝘀 𝗔𝗣𝗜 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 𝗱𝗲 𝗪𝗮𝘁𝗮𝘀𝗵𝗶 𝗴𝗮 𝗸𝗼𝗺𝗮𝘀𝗵𝗶𝘁𝗮 𝟱𝘁𝘀𝘂 𝗻𝗼 𝗵𝗼𝗻𝗯𝗮𝗻 𝗸𝗮𝗻𝗸𝘆𝗼𝘂 𝗱𝗲 𝗻𝗼 𝗺𝗶𝘀𝘂
APIが壊れるのは、コードが複雑だからではありません。
退屈な細部を無視してしまうからです。
私は実際のプロダクションエラーから、これら5つの教訓を学びました。
- データのバリデーションは早めに行う
以前はビジネスロジックの中でデータをバリデーションしていました。そのせいで、発生源から遠く離れた場所でバグが発生していました。
今では、不正なリクエストは即座に遮断しています。
リクエストに有効なメールアドレスが含まれていない場合は、すぐに400エラーを返してください。不正なデータをメインロジックまで到達させてはいけません。
- 具体的なエラーコードを使用する
汎用的な500エラーは、誰の役にも立ちません。
APIキーが失敗した場合は401エラーを、ユーザーのクレジットが不足している場合は402エラーを返します。
Slackでエラーの内容を説明しなければならないとしたら、それはAPIのメッセージングが失敗している証拠です。
- ミドルウェアの順序を確認する
認証の問題のデバッグに何時間も費やしたことがありました。原因は単にミドルウェアの順序でした。
次の順序に従ってください:
- CORSを最初に
- JSONパースを次に
- 認証を3番目に
- ルーティングを最後に
たった一行の記述ミスが、すべてを台無しにします。
- 正しいデータをログに記録する
さまざまなロギングスタイルを試しましたが、ほとんどは役に立ちませんでした。
標準的なトラッキングには、method、path、status codeを記録します。
エラーについては、request ID、エラーメッセージ、およびstack traceを記録します。
午前3時に叩き起こされたとき、それ以外の情報はただのノイズでしかありません。
- レート制限を設定する
エンドポイントへの過剰なアクセスによって、実際に多額の費用が発生するのを目の当たりにしました。
制限のないAPIは「祈り」に頼っているようなものです。祈りはセキュリティ戦略ではありません。
サーバーを保護するために express-rate-limit を使用してください。
APIの失敗の多くは、基本を無視することから起こります。
本番環境はあなたの計画など気にしません。あるのはあなたのセットアップだけです。
出典: https://dev.to/manolito99/5-production-mistakes-that-changed-how-i-build-express-apis-133e