getServerSideProps vs getStaticProps 알고가기

leave_a_comment·2023년 9월 5일
0

getServerSideProps vs getStaticProps

getStaticProps => SSG
getServerSideProps => SSR

SSG는 빌드된 시점에 fetch를 하고, SSR은 매 요청시마다 refetch를 한다는 차이점이 있다. SSR은 SSG보다는 효율이 떨어지지만 언제든지 내용을 수정가능하다.

url 내 쿼리를 활용하여 api 요청 후 해당 데이터를 props로 넘겨줄 경우 getServerSideProps를 사용한다.

getServerSideProps를 사용하면 Context Object가 파라미터로 해당 함수에 들어오는데, key로는 아래와 같은게 있다. (함수는 클라이언트가 아닌 서버에서 돌아간다.)

params: If this page uses a dynamic route, params contains the route parameters. If the page name is [id].js , then - params will look like { id: ... }.
req: The HTTP IncomingMessage object.
res: The HTTP response object.
query: An object representing the query string.
preview: preview is true if the page is in the Preview Mode and false otherwise.
previewData: The preview data set by setPreviewData.
resolvedUrl: A normalized version of the request URL that strips the _next/data prefix for client transitions and - includes original query values.

예제 코드

export const getServerSideProps: GetServerSideProps = async (context) => {
  try {
    const { menuId } = context.query;
    const response = await axios.get<CategoryType[]>(
      "http://localhost:8080/category/get/menu",
      {
        headers: {
          "Content-Type": "application/json",
          "Access-Control-Allow-Origin": "*",
        },
        params: {
          menuId: menuId,
        },
      }
    );
    const data = response.data;
    console.log(data);
    return {
      props: {
        CategoryData: data,
      },
    };
  } catch (err) {
    console.log(err);
    return {
      props: {},
    };
  }
};

참고 레퍼런스 : https://velog.io/@hhhminme/Next.js%EC%97%90%EC%84%9C-SSR%EB%A1%9C-url-query-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0feat.-typescript

profile
나도 성장하고파

0개의 댓글