• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 프론트와 백엔드 라우팅 경로 관련 질문

프론트와 백엔드 라우팅 경로 관련 질문

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #22199

    김사장
    참가자

    안녕하세요.

    [배경]
    실습을 react :3000 번 포트와 서버 :8080 번 포트로 진행하고 있습니다.
    프론트에서는 react-router-dom 으로 다음 경로에 대해서
    /
    /add
    /list
    /search
    각각 다른 컴포넌트를 노출시키고, 필요 시 useEffect 로 axios 요청을 서버로 보내도록 하고,

    백에서는
    app.use(express.static(path.join(__dirname, "client/build")));
    app.get("/", ...)
    app.get("/add", ...)
    app.get("/list", ...)
    app.get("/search", ...)
    app.get("*", (req, res, next) => {
    console.log("router section");
    if (req.path.split("/")[1] === "static") return next();
    res.sendFile("index.html", { root });
    });

    이렇게 API 들을 관리하고 있었습니다.

    :3000 와 :8080 포트를 개별적으로 사용했을 때는 (react build 를 하지 않았을 때)
    브라우저에서 화면을 이동이 잘 되고, 컴포넌트가 렌더링 됐을때 axios 호출이 되어 API 도 실행이 잘 됩니다.

    [문제점]
    빌드를 한 이후에는 브라우저에서 특정 경로로 이동 시,
    app.get("/경로", ...) API 가 있을 경우, 화면이 렌더링 되지 않고 response 만 노출됩니다.

    생각해보니 브라우저에서 routing 되면, 서버에 해당 경로로 get 요청을 보내게 되니, 응답이 오는 것이라 생각되어
    API 경로와 react routing 경로가 중복되지 않도록 설정했더니, 잘 실행됩니다.

    [질문]
    원래 두 개의 경로가 중복되어도 상관 없는건데, 제가 이상한 방법으로 해결한 것인지 우려됩니다.
    중복될 경우 front/back 에 각각 처리하는 로직이 있는것인지, 혹은 위 방법이 맞는건지 궁금합니다 🙂

    감사합니다.

    #22229

    codingapple
    키 마스터

    보통의 유저들은 브라우저에 url을 직접 입력하지는 않고

    웹앱은 라우터 버튼과 history.push로 페이지 이동을 시키기 때문에 신경쓸 필요는 없는데  

    귀찮으면 중복작명을 피하거나 아니면

    서버에서 데이터 뽑는 url들은 작명할 때 /어쩌구/list 이렇게 하나씩 수식어를 더 붙이거나 그러면 됩니다 

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠