HTTP

- HTTP (Hypertext Transfer Protocol)
- 웹을 개발하기 위해 기본적으로 사용되는 프로토콜
- 웹 상에서 클라이언트와 서버가 서로 정보를 주고받을 수 있도록 하는 규약
- 클라이언트는 UTL로 된 HTTP를 통해 서버에게 정보 송신을 요청
http 1.1 / 2.0
- http 1.1
- 기본적으로 연결 당 하나의 요청과 응답 처리
- 동시전송 문제, 속도 및 성능 이슈 존재
- 응답 느림, 속도 느림 -> 성능 안좋음
- http 2.0
- 여러 개의 요청과 응답 처리
- 성능과 속도 모두 http1.1보다 월등
상태코드
- 상태코드 : 상태를 통일화하여 표현하기위해 만든 규칙
- 100번~ : 정보 확인
- 리소스 교체 요청 또는 전송 등의 상태를 표현해주는 역할
- 200번~ : 통신 성공
- 클라이언트가 요청한 작업이 성공적으로 수행됐다는 상태 알리는 역할
- 300번~ : 리다이렉션
- 클라이언트가 요청한 리소스 손실 시 다른 URL로 가라고 안내 역할
- 400번~ : 클라이언트 오류
- 클라이언트가 서버에 보낸 요청이 잘못된 경우를 표현해주는 역할
- 500번~ : 서버 오류
- 서버에 문제가 발생했다고 알려준 역할 (클라이언트의 잘못이 아님)
요청 메서드
- GET : 존재하는 자원에 대한 요청
- POST : 새로운 자원을 생성
- PUT : 존재하는 자원에 대한 변경
- DELETE : 존재하는 자원에 대한 삭제
- 기타 요청 메소드
- HEAD : 서버 헤더 정보를 획득
- OPTIONS : 서버 옵션들을 확인하기 위한 요청
http vs https
- https
- http의 보안 취약점을 해결하기 위해 만들어진 프로토콜
- SSL 프로토콜을 추가하여 데이터를 암호화한다
- 공개키 방식
- 공개키와 비밀키는 암호문을 만들고 복호화할 때 사용됨
- 사용 예) : 인증, 전자 상거래 등
- 사용하는 이유
- 1) 무결성 : 중간에 데이터가 변조되지 않는다
- 2) 기밀성 : 데이터가 비밀로 유지될 수 있다
- 3) 인증 : 데이터의 진위여부를 확인 할 수 있다.
http vs tcp vs ip
참고) http://blog.wishket.com/http-%ea%b7%b8%eb%a6%ac%ea%b3%a0-https%ec%9d%98-%ec%9d%b4%ed%95%b4/
https://webactually.com/2018/11/16/http%EC%97%90%EC%84%9C-https%EB%A1%9C-%EC%A0%84%ED%99%98%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C/
서버와 클라이언트란

-
서버(server) : 클라이언트들이 요구하는 각종 서비스를 제공하는 측
-
(클라이언트/서버 모델에서)
- 네트워크 상에서 하드웨어 또는 소프트웨어로써 서비스의 요청을 받는 측
-
클라이언트(Client) :기본적으로 한 개 이상의 서버가 제공하는 서비스를 사용할 수 있는 소비자의 개념
-
(클라이언트/서버 모델에서)
- 네트워크를 이용하여 서버측에 서비스 요청을 의뢰하는 주체
참고) https://server-talk.tistory.com/291
세션 & 쿠키란 무엇인가
세션(Session)
- 1) 서버안에서 다뤄지는 것
- 2) 사용자나 다른 누군가에게 노출되면 안되는 정보들은 세션으로 서비스 제공자가 직접 관리(많으면 서버에 부담)
- 사용 예
- 로그인 같이 중요한 작업을 수행할 때 사용
쿠키(Cookie)
- 1) 사용자의 편의를 위한 것
- 2) 지워져도 되고, 가로채이더라도 큰 일이 없는 수준의 정보들을 브라우저에 저장
- 사용 예
- 쇼핑몰의 장바구니, 방문사이트에서 로그인시 뜨는 확인 창
세션과 쿠키의 차이
- 가장 큰 차이점 : 사용자의 정보가 저장되는 위치
- 쿠키서버의 자원을 전혀 사용X, 세션은 서버의 자원 사용
세션 대신 쿠키를 사용하는 이유
- 세션은 서버의 자원을 사용 -> 메모리 문제로 속도가 느려질 수 있음
참고) https://interconnection.tistory.com/74
Prettier & ESLint
Prettier의 필요성
- Prettier : 자동으로 코드의 스타일을 관리해주는 도구
- ex) 문자열을 사용 할때 '을 쓸지, "를 쓸지, 또는 세미콜론(;)을 코드 뒤에 붙일지 말지 등을 관리해줄 수 있다.
- CLI를 통해 명령어를 입력하여 사용 할 수도 있고, 다양한 에디터와 연동해서 사용 할 수도 있다.
ESLint의 필요성
- ESLint : 자바스크립트의 문법을 확인해주는 도구
- CRA로 만든 프로젝트에는 이미 적용이 되어있어 만약 실수가 발생하면 터미널에 오류 또는 경고가 나타난다
- ex) 값을 선언 한후 사용하지 않으면, 터미널에서 오류 발생
ESLint vs Prettier
- 코드 에러, 문법 등을 정적으로 탐지할 경우 -> Eslint
- 포맷팅의 경우 -> Prettier
참고) https://react.vlpt.us/basic/27-useful-tools.html