오늘 처음 백엔드쪽 라우터 개념 진입을 했다. 벌써 4주차고, 백엔드로 진입하다니 느낌이 이상허다.
앞에 부분 이해하지 못하고 그냥 제낀 부분도 많은데 어떡하지..? 껄껄 🧙
러프하게 그냥 들었던 것 메모 옮기기.. (틀린 정보 다수 있을 수 있음!!!)
1. 라우트(Route)
- 라우팅은 우리가 네트워크에서 특정 경로로 데이터를 보낼 때 사용되는 과정.
- 인터넷 도메인을 보면.. 기본 도메인 뒤에 뭐라뭐라 뒤에 붙여져있는 것을 볼 수 있음.
아 이거 그냥 경로 아니에요? 라고 생각할 수 있는데, 직접 개발하는 개발자 입장에서는 상당히 골치 아픈 문제.
- 아 물론 만들때는 복잡할 수 있는데, 개념 상에서는 그렇게 복잡한 것은 아님.
- 우선 기초 공부를 할 때는 백엔드에서 라우트한다는것은 뭐고, 프론트엔드에서 라우트 한다는 것이 뭔지 알고 가면 됨!
2. JSON
- 짱 유명한 데이터 형식중에 하나.
- 요약하자면 Javascript Object Notation으로 자바스크립트에서 객체를 표기하는 방법, 형식
- 용도는 서로 다른 언어간에 데이터를 주고받기 위함
- 언어가 C, 파이썬, 자바스크립트 이런 식으로 서로 작성한 것이 다르게 되어있으면 통신을 어떻게 해..? 내가 먼저 짰으니깐 너가 바꿔 ㅡㅡ 라고 할순 없으니, 규칙을 정한것임.
- JSON언어라는 포맷으로 데이터를 파싱하는 것!
- serialize (기존 문서 > JSON ) / deserialize (JSON > 사용하는 언어)
- JSON 외에.. XML은 처음 취지는 사람도 쉽게 읽고 컴퓨터도 쉽게 데이터를 받을 수 있도록 만든 것인데 데이터 주고 받을때는 쓸데없이 용량도 크고 코드도 길고 불편해서 잘 안씀. 물론 쓰면 좋을 때도 있긴 함. ( 구조를 나타낼 때 유리해서 안드로이드 디자인과 같은 부분에서 활용)
- 배열이나 리스트의 경우 인덱스로 순회하며 접근하는 경우가 있는데 그럴 때 JSON은 키값으로 바로 접근 가능!
- res, req , get..등은 다음시간에 배우자고~
- : ? / 등의 기호를 사용
- redirect 백엔드, 프론트엔드에서 둘다 가능. 그때 그때 상황에 맞춰 사용
3. 백엔드 라우트
Express 라이브러리
- 웹 서버 구축을 위한 라이브러리
- path
- Query param 다루기
- 라우터 반환 형식은 자유롭게 할 수 있음 (문자열, HTML, JSON, 파일...)
- 어떤 사이트를 들어갔을 때 자동으로 파일이 다운받아지는 경우는 반환 형식이 파일이어서 그런건가요? > 네!
- 원래는 백엔드에서 라우팅을 만들면 다 끝났는데, 프론트엔드 라우팅이라는게 생기면서 할수 있는게 점점 많아짐..
4. 프론트엔드 라우트
-
자바스크립트로도 url 주소 조작 가능.
-
history API : 자바스크립트로 세션(탭) 마다 관리되고 있는 히스토리를 직접 조작할 수 있도록 하는 API
-
window.history.back
, window.history.forward
, history.go(n)
-
window.history.pushState
,window.history.replaceState
차이점은 추가냐, 대체냐
-
페이지 이동할 때 새로고침이 되는 것은 백엔드에서 구현한 라우팅
-
페이지 이동할 때 새로고침이 되지 않는 것은 프론트엔드에서 구현한 라우팅
-
popstate
팝스테이는 보통 이벤트로 활용
-
window.location
-
-> 그래서 뭐..어쩌란거지? 라면... 위에 소개한 기능들 5개로 프론트 엔드 라우팅 구성한다는 것!
-
주소를 바꾼 척만 하고 위 기능들로 왔다갔다 하는 것.
SPA(Single Page Application)
- window.location은 맨 처음에 페이지를 열 때, 특정 페이지로 이동하고 싶을 때 pathname 정보를 가지고 파악해서 렌더 페이지를 불러옴.
라우터 구분
- API routes
- Static web page routes
- Frontend routes
- Server Side Rendering
- Frontend & Static Webpage 같이 사용
5. Fetch
fetch(‘url’)
.then(response => response.json()) // url에서 가져온 reponse를 json 형식으로 바꿔서 받기.
.then(data => ...