[엘리스 SW트랙 4기] 4주차 - Day 17 - 라우터 (백엔드 / 프론트엔드)

랸나·2023년 3월 21일
0
post-thumbnail
오늘 처음 백엔드쪽 라우터 개념 진입을 했다. 벌써 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 => ...
profile
백엔드개발자

0개의 댓글