Nag's Blog
Avatar

KEEP ON GROWING

Next.js apiのレスポンス 注意点

要点

  • Node.jsのhttpモジュールについて
  • httpモジュールでレスポンスが返されるタイミング
  • httpモジュールでレスポンスを返すときのbodyの値の入れ方


修正前

export default (req: any, res: any) => {
res.clearPreviewData();
res.status(200).json({ message: 'Preview data cleared.' });
res.writeHead(307, { Location: '/' });
res.end();
};

修正後

export default (req, res) => {
 // プレビューモードのcookieを削除する
 res.clearPreviewData();

 // リダイレクト先を設定する
 res.writeHead(307, { Location: '/' });
 res.end();
};

問題点

レスポンスについて理解してなかった。
というかNode.jsのhttpモジュールについて理解してなかった。
resなどはNode.jsのコアモジュールであり、Next.jsはそれを継承している。
今回の課題は、res.status(200)で一度レスポンスを返した後、res.end()で2回目のレスポンスを返している。

res.status()について

res.status()はレスポンスのステータスコードを設定するメソッド。
このメソッドを呼び出した後にres.send()やres.json()などを使ってレスポンスの内容を追加することが出来る。
res.status()だけを呼び出した場合はレスポンスのボディは空になる。

res.end()について

res.end()が記述された時点でレスポンスが返される。
それ以降に何も処理は入れられない。