기초부터 완성까지 프론트엔드 - day5
Day 5
오늘 읽은 범위
- 9장 네트워크 통신
- 10장 프론트엔드 뉴스 게시판 만들기
책에서 기억하고 싶은 내용을 써보세요.
HTTP (HyperText Transfet Protocol) : 하이퍼미디어 문서를 전송하기 위한 프로토콜
- 클라이언트 → 서버 : 요청 (request)
- 서버 → 클라이언트 : 응답 (response)
- http 통신은 상태(state)라는 개념이 존재하지 않음 (클라이언트와 서버가 연결되어 있지 않아 그 전에 처리된 요청과 응답이 통신에 영향을 주지 않고 각각 독립적으로 처리됨)
- https: http보다 보안이 강화됨
응답 상태코드
- 1xx (informational): 서버에서 요청을 수신했으며 현재 처리하고 있거나 정보를 알려 줄 필요가 없을 경우
- 2xx (success): 요청이 성공적으로 완료됨
- 3xx (Rdirection): 요청을 마치기 위해 다른 위치로 리다이렉션하는 것과 같이 추가로 동작을 취해줘야할 때
- 4xx (Client Error): 요청이 잘못된 구문이 포함되어 있거나 수행할 수 없는 경우 반환
- 400 (Bad Request): 요청 오류. 잘못된 문법으로 인해 서버가 해당 응답을 이해할 수 없을 때
- 401 (Unauthorized): 권한 없음. 요청 받기 위해서는 인증을 받아야 함
- 403 (Forbidden): 접근이 금지될 떄 반환
- 404 (Not Found): 서버가 요청 받은 리소스가 없을 때
- 5xx (Server Error): 서버가 유효한 요청을 수행하지 못했을 때 반환
- 500 (Internal Server Error): 서버가 처리 방법을 모를 경우 발생
- 502 (Bad Gateway): 게이트웨이나 프록시 작업 시 잘못된 응답을 수신
- 503 (Service Unavailable): 서버가 요청을 처리할 준비가 되지 않은 경우. 서버에 과부하가 걸리거나 배포 도중 서비스가 중단 되는 상황 등
헤더 : 서버와 클라이언트 사이에서 body 외에 추가적인 정보를 교환하는 방식
쿠키 :
- 서버가 사용자의 웹 브라우저에 전송하는 작은 기록 정보 파일
- 공개된 정보로 보안에 취약하여 개인 정보나 보안상 중요한 정보를 담기에는 적합하지 않음
- 세션이 종료될 때 제거됨
setCookie
쿠키를 만듬secure
속성을 사용할 경우 HTTPS로 통신하는 경우에만 쿠키가 전송됨HttpOnly
클라이언트 측에서 쿠키를 사용할 수 없게 됨 (자바스크립트를 사용하여 쿠키에 접근하는 것을 막음)- 교차 출처 리소스 공유 (CORS): 브라우저의 보안을 위해 잠재적으로 위험이 있는 문서의 접근을 허용하지 않음 (프로토콜, 포트, 호스트가 같은 때 = 동일출처)
JSON (Javascript Object Notation)
- 자바스크립트의 객체 리터럴 작성법을 따름
stringify()
: JSON 문자열로 변환parse()
: ECMAScript 객체로 변환
Ajax
페이지 이동 없이 빠르게 화면을 동적으로 변경할 수 있으며 초기에 수신해야하는 데이터의 양을 줄여 빠르게 로딩할 수 있음
XMLHttpRequest : 브라우저와 웹 서버간에 통신을 하여 리소스를 가져올 수 있는 API
Promise: ES2015에서 새롭게 도입됨, 비동기 처리 시점을 명확하게 표현
new Promise((resolve, reject)=>{})
- 이행 (fullfiled)
- 거부 (rejected)
- 보류 (pending)
then()
: 첫번째 콜백함수: 이행되었을 때 결과, 두번째 콜백함수: 거부되었을 때 에러를 다루는 콜백catch()
: 에러를 처리하는 메서드finally()
: 이행, 거부와 상관없이 실행되는 메소드- 체이닝 가능
all()
: 여러개의 Promise를 동시에 실행시키고 모든 Promise가 완료되면 결괏값을 배열로 반환allSettled
: all()과 동일하지만, 반환값이 다름{status:'fullfilled',value:result}
,status:'rejected', reason: error
형태
async/await
- Promise의 체이닝이 길어지면 가독성이 떨어지는 것을 개선하기 위해 나옴 문법
- 에러 처리는
try...catch
문을 사용 catch()
: 에러를 처리하는 메서드Promise.all()
과 함께 사용할 수 있음
fetch()
- response 객체를 원하는 형태로 가공할 수 있음
- text: 텍스트로 반환
- json: json로 반환
- formData: FormData 객체 형태로 반환
- blob: Blob으로 반환
- arrayBuffer: ArrayBuffer로 반환
별도의 미디어쿼리를 작성하지 않고 rem을 사용해 여러 장치에 대응하도록 함
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
open-api를 사용해서 프로젝트를 제작할 때 많은 400번대 오류들을 마주쳤었는데, 책을 읽으며 오류코드의 오류 내용을 정리할 수 있어서 좋았다. 항상 all()
메소드만 이용했었는데 응답의 status의 값에 따라 다른 처리를 해줘야 할 때 allSettled()
를 사용해봐야겠다.
This post is licensed under CC BY 4.0 by the author.