withHandler의 목적
- 각각의 API에서 공통적으로 처리해야 할 로직을 처리한다.
withHandler
사용함으로서 코드의 중복을 방지한다. 예를 들어, method
검증이나 또는 로그인/비로그인 상태에 따라 redirect
시키는 로직등이 있을 것 같다.
code
type WithHandlerConfig = {
method: "POST" | "GET" | "DELETE" | "PUT" | "PATCH";
handler: (req: NextApiRequest, res: NextApiResponse) => void;
};
export default function withHandler({method, handler}: WithHandlerConfig){
return async function (request, response){
if(request.method !== method){
return response.status(405).end();
}
try{
await handler(request, response);
} catch(e){
return response.status(400).end();
}
}
}