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()が記述された時点でレスポンスが返される。
それ以降に何も処理は入れられない。