Today I Learned D - 52

손상훈·2022년 11월 11일
0

< 장고 DRF 용어 정리 및 이해 >

- 쿠키와 로컬스토리지의 개념을 설명해주세요

쿠키는 클라이언트 로컬에 저장되는 키-값이 들어있는 작은 데이터 파일이고, 300개의 쿠키를 저장할 수 있고, 한 도메인당 20개가 최대 (1쿠키당 4kb), 유효시간을 명시할 수 있고, 유효시간이 정해지면 브라우저가 종료되도 인증이 유지된다. ex) 다시 보지 않음 팝업 창, 인터넷 장바구니
로컬에 저장.

(storage = 데이터를 저장하는 장소)
로컬 스토리지는 클라이언트에 대한 정보를 영구적으로 저장. ex) 자동 로그인

- 토큰과 세션의 개념을 설명해주세요

세션이란? 각 클라이언트에게 고유 ID를 부여, 보완성 측면에서 세션이 쿠키보다 우수. 동작원리는 세션이 쿠키를 기반으로 해서 비슷함. 브라우저가 종료되면 삭제된다. 브라우저가 아닌 서버 측에서 관리, ex) 로그아웃 전까지 로그인 상태 유지
로컬과 서버에 저장.

세션 < 토큰

- 쿠키와 스토리지의 장점과 단점을 설명해주세요

쿠키의 장점: 브라우저가 지원, 브라우저가 종료되더라도 만료시간이 지나지 않는다면 삭제되지않음.
쿠키의 단점: 매 HTTP요청마다 포함되어 api호출로 서버에 부담, 데이터 저장 용량이 작음(4kb), 암호화가 존재하지 않음, -> 사용자 정보 도난 위험.

로컬스토리지의 장점: 쿠키와는 다르게 서버에 불필요하게 데이터를 저장하지 않는다, 데이터 저장 용량이 크다(5Mb), 쿠키는 text 및 string형태만 저장가능하지만 배열(array)와 object의 값도 저장가능.

로컬스토리지의 단점: HTML5를 지원하지 않는 브라우저의 경우 사용 불가.
세션스토리지는 탭(세션)을 닫는 즉시 삭제가 된다.

추가적으로 로컬스토리지와 세션스토리지의 가장 큰 차이점은 데이터의 영구성.
스토리지는 폴더? 테이블의 개념인가? 저장소?와 같은 느낌인가?
웹에서 F12로 스토리지 확인가능.

- 토큰과 세션의 장점과 단점을 설명해주세요

세션의 장점: 쿠키보다 보완성이 우수
세션의 단점: 서버에서 다시 데이터를 클라이언트로 보내줘야되기때문에 비교적 느리고 소모되는 자원이 많다.

토큰의 장점: 클라이언트에 저장되기 때문에 서버의 부담을 줄일 수 있다.
토큰의 단점: 토큰 자체 데이터 길이가 길어서 인증 요청이 많아질수록 네트워크 부하가 심해질 수 있고, payload(내용)이 암호화되지 않기 때문에 중요한 정보는 담을수가 없다. 탈취당하면 대처하기 어렵. 그래서 사용기한제한을 두고 refresh token을 이용한다.
토큰방식은 앱에서 자주 쓰인다. 이유는 쿠키와 세션이 웹에서는 존재하지만 앱에서는 존재하지 않기 때문.

stateful (세션&쿠키방식), stateless (토큰방식)
세션,쿠키,토큰방식


- 프론트엔드과 백엔드의 전체적인 흐름을 설명해주세요(그림으로 그려주셔도 됩니다)

Frontend : 서비스를 편하게 이용할 수 있도록 사용자 인터페이스를 다룸.
Backend : 사용자들이 실질적으로 원하는 정보 또는 데이터를 관리하거나 제공.

내가 생각하는 프론트엔드는 백엔드의 기능적인 부분을 꾸며주고 눈에 보이게 하여 백엔드의 기능을 사용하고 나타나게 하는 것이라 생각했다.

백엔드는 실행적인 부분, 기능을 보여준다, 작동의 모든 것. 이라고 생각했다.

- serializer가 하는 역할을 설명해주세요

serializer이란?

  • 직렬화라는 뜻. drf를 쓰면서 데이터를 주고 받을 때 json형태로 바꿔줘야하기 때문에 모델을 직렬화시켜준다는 의미.

serializer 사용 방법 :

- decorator의 역할을 설명해주세요

데코레이터란? (다른 함수를 꾸며주는 함수)

  • 어떤 함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수.
  • 어떤 함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용.

    decorator 설명
  • 한 함수에 여러개의 기능을 추가하고 싶을 때

decorator 사용 예시 및 방법:

- class 와 def의 차이를 설명해주세요

class 란?

  • 특정 개체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀이다.
  • 여러 함수들을 하나의 틀안에 넣어 묶어주고 효율적으로 관리하기 위함이다.

Class 개념

class __init__(Calc, a,b) Calc.x = a Calc.y = b 어떻게 쓰든 __init__에서 첫번째로 들어가는 변수명은 Calc 클래스 스스로를 지칭하게 되서 아무렇게 써도 상관이 없다.

def 란?

  • 함수이고, 하나의 특별한 목적의 작업을 수행하기 위해 설계된 코드의 집합.

- HTTP 메소드가 무엇이 있는지 설명해주세요

GET - 리소스 조회
POST - 신규 리소스 등록
PUT - 쉽게 말해 데이터를 덮어쓴다.
PATCH - PUT과 마찬가지로 수정할 때 사용하지만 리소스를 일부만 변경가능
DELETE - 삭제

- AbstractBaseUser, AbstractUser, User 의 차이점을 설명해주세요.

- 상태코드에 대해 설명해주세요(100번대, 200번대, 300번대, 400번대, 500번대)

100번대(정보) - 요청을 받았고 프로세스를 계속 진행한다.
200번대(성공) - 요청을 성공적으로 받아서 인식했고 수용했다.
300번대(리다이렉션) - 요청완료를 위해 추가 작업 조치가 필요하다.
400번대(클라이언트 오류) - 요청의 문법이 잘못되었거나 요청 처리 불가능하다.
500번대(서버 오류) - 서버가 명백히 유효한 요청에 대한 충족을 실패했다.
HTTP 상태코드 종류와 의미

- RestAPI 쓰는 이유를 설명해주세요

API란?? (어플리케이션 프로그래밍 인터페이스의 줄임말)
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것.

RestAPI란?
REST 기반으로 서비스 API를 구현하는 것
RestAPI를 쓰면 주소와 메서드만 보고 요청의 내용을 알아볼 수 있다.

Rest(REpresentational State Transfer)란 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법.
RestAPI를 이용해 HTTP 통신을 사용하면 모두 같은 주소로 서버에 요청을 보낼 수 있다.
REST API 설명

< 쓰는 이유 >

애플리케이션 분리 및 통합’
‘다양한 클라이언트의 등장’
최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다.
이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용하는 방법을 모색한 결과, REST에 관심을 가지게 되었다.

REST 구성 3가지 : 자원 , 행위 , 메시지
자원(resource) : 접근할 대상, URI
행위(method,verb) : HTTP Method - GET(조회) , POST(생성) , PUT(수정), DELELTE(삭제)

  • 일반적으로는 GET, POST 방식을 사용하나, REST에서는 PUT, DELETE도 사용한다.
    메시지(표현) : Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
    REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다.
    JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.

URI란?

  • 네트워크 상 자원을 가리키는 일종의 고유 식별자(ID)인데 URI안에 URL,URN가 있고 URL은 자원의 위치, URN은 자원의 이름을 의미한다. (아래사진을 보면 이해금방됨.)

- API를 restful하게 쓰는 방법을 설명해주세요.

RESTful한 규칙
RESTful하게 라는 말은?
REST 원리를 잘 따르는 시스템을 의미하는데 CRUD기능을 종류별로 잘 적고 route(url)
이에 앞서 RESTful하지 못한 경우

  • ex) CRUD기능을 모두 POST로만 처리하는 API

- MTM, OTO, FK를 설명해주세요

- JSON에 대해 간단하게 설명해주세요.

- HTTP 메시지의 구조를 셜명해주세요

- Request와 Response 메시지의 역할을 설명해주세요

- HTTP의 헤더의 역할을 설명해주세요

- State와 Stateless의 뜻을 설명해주세요

- JWT 구조를 설명해주세요

- 역참조에 대해 설명해주세요

profile
< 코린이의 코딩모험기 >

0개의 댓글

관련 채용 정보