코드 저장소

공부에는 끝이 없다!

HTTP 15

HTTP - 캐시와 조건부 요청(1)

캐시란?1MB 정도의 크기를 하진 이미지 파일을 요청한다고 생각해보자.캐시가 없다면 HTTP 헤더라 0.1MB 바디가 1.0MB로 총 1.1MB의 응답이 전송되었다.그런데 같은 요청을 똑같이 반복해서 보낼때 또다시 1.1MB의 응답 메시지를 만들어 서버가 전송하게 될 것이다.이런 경우 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다.인터넷 네트워크는 매우 느리고 비싸고 브라우저 로딩 속도가 느리기 때문에 사용자가 느린 환경에서 작업을 하게 될 것이다. 그럼 캐시를 적용하면 어떻게 될까?브라우저가 서버로 이미지를 요청하면 cache-control 헤더를 통해 캐시를 제어할 수 있다.max-age옵션을 이용하면 해당 캐시의 라이프 사이클을 제어 할 수 있는데, 예를들어 cach..

HTTP 2024.05.01

HTTP - HTTP 일반헤더와 쿠키

쿠키쿠키 사용시 2개의 헤더를 사용하게 된다. Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달우선 쿠키가 무엇이고 어떤 역할을 하는지 알아보자.만약 홍길동이라는 이름의 유저가 로그인을 한다고 가정해보자.1.쿠키를 사용하지 않는 경우웹 브라우저는 POST 요청으로 user에 대한 로그인 정보를 보내고 서버는 로그인에 대한 응답을 주게 될 것이다.쿠키를 사용하지 않는 경우, 이미 로그인이 된 상태에서 다시한번 GET 요청으로 Index 페이지로 접근한다고 가정해보자.서버에서는 로그인 된 유저에 대한 정보가 없기 때문에 해당 요청이 홍길동이 보낸것인지 알수가 없다.HTTP는 무상태 프로토콜이기 때문에 클라이언..

HTTP 2024.04.30

HTTP - HTTP 일반 헤더(3)

HTTP 헤더의 일반 정보 HTTP 헤더에는 단순 정보성의 필드가 존재한다. 대표적인 일반 정보 필드를 살펴보자. From : 유저 에이전트의 이메일 정보 일반적으로 잘 사용되지는 않지만 검색 엔진 같은 곳에서는 주로 사용되기도 한다. 요청에서 사용된다. Referer : 이전 웹 페이지 주소 현재 요청된 페이지의 이전 웹 페이지 주소를 말한다. 가장 많이 사용되는 일반 정보 필드 중 하나이며 Referer를 사용하여 유입 경로 분석이 가능하다. A > B로 이동하는 경우 B로 요청을 할 때, Referer: A를 포함하여 요청하는 방식으로 사용되며 From과 마찮가지로 요청에서 사용된다. User-Agent : 유저 에이전트 애플리케이션 정보 클라이언트의 애플리케이션 정보(웹 브라우저 정보 등등..)를..

HTTP 2024.01.23

HTTP - HTTP 일반 헤더(2)

협상(콘텐츠 네고시에이션) 헤더 협상이란 클라이언트가 선호하는 표현 요청을 이야기 한다. 좀 더 쉽게 설명하자면 클라이언트가 선호하는 표현을 요청하면 서버에서 여러가지 표현 방법 중 클라이언트가 선호하는 표현으로 응답을 만들어 보내는 것을 말한다. 협상에는 미디어 타입, 인코딩, 자연언어 등이 표현되며 각각을 표현하는 요청 헤더는 다음과 같다. Accept : 클라이언트가 선호하는 미디어 타입 Accept-Charset : 클라이언트가 선호하는 문자 인코딩 Accept-Encoding : 클라이언트가 선호하는 압축 인코딩 Accept-Language : 클라이언트가 선호하는 자연 언어 이러한 협상 헤더는 클라이언트가 보내는 것이기에 요청시에만 사용되는 것이 특징이다. 또한, 협상의 경우 클라이언트가 선호..

HTTP 2024.01.23

HTTP - HTTP 일반 헤더(1)

HTTP 헤더 개요 HTTP 헤더의 구성은 다음과 같다. header-field = field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용) ex) Host: www.google.com *field-name은 대소문자 구분이 없다. HTTP 헤더에는 HTTP 전송에 필요한 모든 부가 정보가 들어가게 되며 메시지 바디의 내용, 크기, 압축,인증, 요청 클라이언트, 서버 정보 등 무수한 정보를 넣을 수 있다. 과거 RFC2616에서는 헤더를 크게 4가지로 분류하였는데 다음과 같이 나뉜다. General 헤더 : 메시지 전체에 적용되는 정보 (ex. Connenction) Request 헤더 : 요청 정보 (ex. user-Agent) Response 헤더 : 응답 정보 (e..

HTTP 2024.01.19

HTTP - HTTP 상태코드 (2)

1. 3xx (Rediretion) 300번대의 상태코드는 요청을 완료하기 위하여 유저 에이전트의 추가 조치가 필요한 것을 의미한다. 유저 에이전트는 클라이언트 프로그램을 말하며 대부분의 경우 브라우저이다. 300번대의 대표적인 상태 코드는 다음과 같다. 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 이 중에서 300은 거의 사용되지 않으며 301 ~ 308은 중요하게 사용된다. 300번대를 설명하기 전에 리다이렉션에 대해서 이해를 할 필요성이 있다. 웹 브라우저는 300번대의 응답의 결과에 Location 헤더가 있으면..

HTTP 2024.01.17

HTTP - HTTP 상태코드 (1)

HTTP 상태 코드란? HTTP 상태 코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려 주는 기능이다. 인터넷을 사용하다보면 403 Error라는 것을 가끔 보았을 것이다. 여기서 403이 바로 HTTP 상태 코드이다. 상태 코드는 크게 5분류로 이루어 진다. 1xx (Informational): 요청이 수신되어 처리중 2xx(Successful): 요청 정상 처리 3xx(Rediretion): 요청을 완료하려면 추가 행동이 필요 4xx(Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx(Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 만약, 클라이언트가 인식 할 수 없는 상태코드를 서버가 반환한다면 클라이언트는 상위의 ..

HTTP 2024.01.16

HTTP - HTTP API 설계

POST 기반 API와 PUT 기반의 API 1. Post 기반의 등록 회원 등록이라는 기능을 HTTP API를 통하여 만든다고 생각해보자. 우리는 POST 메서드를 이용하여 /members라는 URI를 통하여 회원 정보를 등록하게 될 것이다. URI를 잘 보면 뒤에 쿼리 파라미터가 따로 필요가 없는 것을 확인 할 수 있다. 이것은 POST는 바디를 통해 전달 받은 데이터를 어떻게 처리할 지 서로 규약을 통해 알고 있기 때문이다. 이때, /members를 Collection이라고 한다. Collection은 서버가 관리하는 리소스 디렉토리를 말하며 서버가 리소스의 URI를 생성하고 관리하는 것을 말한다. 또한, 앞선 강의에서 설명했듯 POST는 서버가 리소스 URI를 결정하기 때문에 클라이언트가 등록될 ..

HTTP 2024.01.15

HTTP - HTTP 메서드 활용하기

이번 시간에는 HTTP 메서드를 활용하여 HTTP API를 설계하는 방법을 배워 보겠다. 클라이언트에서 서버로 데이터 전송하기 클라이언트에서 서버로 데이터를 전달하는 방식은 크게 2가지가 있다. 쿼리 파라미터를 통한 데이터 전송 GET에서 사용 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH에서 사용 회원 가입, 상품 주문, 리소스 등록, 리소스 변경.... 그럼 4가지 상황을 가정해 보고 각각의 상황에서 데이터가 어떻게 전송되는지 생각해보자. 1. 정적 데이터를 조회하는 경우 만약 클라이언트가 이미지나 텍스트문서 같은 정적인 데이터를 받는 경우 쿼리 파라미터를 사용하지 않는다. GET 메서드를 통해서 주어진 URL로 들어가게만 하면 되기 때문이다. 즉, 추가적인 ..

HTTP 2024.01.12

HTTP - HTTP 메서드의 속성

HTTP 메서드의 속성 HTTP 메서드는 3가지 큰 특징을 가진다. 안전(Safe Methods) 멱등(Idempotent Methods) 캐시가능(Casheable Methods) 이번 시간에는 이런 HTTP 메서드의 속성에 대하여 알아보자. 안전 안전이라는 특징은 호출해도 리소스를 변경하지 않는것을 의미한다. 그런 점에서 GET,HEAD와 같은 메서드는 리소스를 변경하지 않으므로 안전하다고 할 수 있다. 단, 안전은 해당 리소스의 변경만 고려하므로 로그가 쌓여서 발생하는 장애같은 것은 고려하지 않는다. 어디까지나 리소스에 대해서만 생각해야 한다. 멱등 멱등이라는 것은 몇번을 호출하든 같은 결과를 반환하는 것을 말한다. 조금 헷갈릴 수 있는데 여기서 같은 결과를 반환한다는 것은 요청이 같을 때 메서드로..

HTTP 2024.01.11