APIの処理にカスタムコードを書く
カスタムコード(Embed Code) 機能を使うと、MicroService API の各エンドポイントに対して独自の処理を JavaScript で記述できます。
バリデーション・外部API連携・データ加工など、標準機能では対応しにくいロジックを柔軟に追加できます。
実行タイミング
カスタムコードは以下の2つのタイミングで実行されます。
| タイミング | 説明 |
|---|---|
| Before Hook | リクエストを受け付けた後、データベース処理の前に実行 |
| After Hook | データベース処理の後、レスポンスを返す前に実行 |
主なユースケース
Before Hook の活用例:
- 入力値のカスタムバリデーション
- リクエストデータの整形・変換
- 外部サービスへの事前確認(在庫チェックなど)
After Hook の活用例:
- 外部通知(Slack・メール・Webhook)
- 関連APIへの連携処理
- レスポンスデータの加工・フィルタリング
カスタムコードの設定手順
- コンソールでチームを選択し、対象の MicroService API を開きます。
- カスタムコードを追加したいエンドポイントを選択します。
- 「Embed Code」 タブを開きます。
- Before Hook または After Hook のエディターにコードを記述します。
- 「保存」 をクリックします。
コードの例
Before Hook: 入力バリデーション
// リクエストボディの price が 0 以下の場合にエラーを返す
if (request.body.price <= 0) {
throw new Error("price must be greater than 0");
}
After Hook: Slack への通知
// レコード作成後に Slack Webhook で通知する
const webhookUrl = process.env.SLACK_WEBHOOK_URL;
await fetch(webhookUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
text: `新しいレコードが作成されました: ID=${response.data.id}`
})
});
ヒント
シークレット(APIキーなど)は環境変数として参照できます。
登録方法は APIでシステム連携するシークレット を参照してください。
注意事項
- カスタムコードは MicroService API のみ に対応しています(IAM API・Storage API は対象外)。
- 実行時間に上限があります。長時間かかる処理は非同期での設計を検討してください。
- エラーが発生した場合、Before Hook は処理を中断してエラーレスポンスを返します。After Hook はレスポンスには影響しません。