김영한의 스프링/HTTP웹_기본지식
-
캐시김영한의 스프링/HTTP웹_기본지식 2024. 1. 23. 12:22
캐시는 데이터나 값을 임시로 복사해두는 임시 장소이다. 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시가 없으면 데이터가 변경되지 않더라도 계속 네트워크를 통해서 데이터를 다운받아야한다. 이 과정에서 인터넷 네트워크는 매우 느리고 비싸고 브라우저 로딩 속도가 느리게 된다. 이를 해결하기 위해 캐시를 사용한다. 아래 그림을 통해 확인 할 수 있다. cashe-control: max-age=60을 설정하여 캐시가 유요한 시간을 정해두면 브라우저는 해당 응답을 받으면 브라우저 캐시에 저장한다. 브라우저에서 같은 요청을 하면 브라우저 캐시에서 조회에서 바로 꺼낸다. 이렇게 캐시를 적용하면 캐시 가능 시간 동안 네트워크를 ..
-
쿠키김영한의 스프링/HTTP웹_기본지식 2024. 1. 23. 11:15
이전에 HTTP 특징을 살펴 보았을 때 Stateless(무상태) 특징을 가지고 있었다. 따라서 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 자동으로 끊어진다. 그 이후에 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못하게된다. 즉, 클라이언트와 서버는 서로 상태를 유지하지 않는다. 그렇다면 웹 사이트에서 어떻게 로그인을 하고 이를 유지 할 수 있을까? 앞에서 배운 내용이라면 한번 로그인하면 다음 요청때는 로그인한 기록이 사라지는 것이 맞다. 어떻게 해야 이를 해결 할 수 있을까? 먼저 첫번째 방법으로는 모든 요청에 사용자 정보를 포함하는 방법이다. 하지만 다음과 같은 방법은 치명적인 단점이 있다. 모든 요청에 사용자 정보가 포함되도록 개발해야하고 개인 정보가 유출이 될 수 있는 심각..
-
HTTP BODY김영한의 스프링/HTTP웹_기본지식 2024. 1. 23. 10:48
오늘은 HTTP의 BODY(메시지 본문) 에서 주요 데이터 전달을 어떻게 하는지 알아 보도록 하겠다. HTTP BODY - RFC7230(최신) 우리는 메시지 본문(message body)을 통해 표현 데이터를 전달한다. 여기서 표현이란 무엇일까? 과거 HTTP RFC2616(과거)에서는 하나의 HTTP 단위를 엔티티라고 불렀다. 현재 표현 헤더라고 불리는 부분은 엔티티 헤더, 표현 데이터라고 불리는 부분은 엔티티 본문이라고 불렀다. 하지만 RFC7230(최신)으로 변경이 되면서 엔티티라는 용어 대신아 표현이라는 용어를 사용하게되었다. 표현 = 표현 메타데이터 + 표현 데이터로 구성되어있다. 표현은 요청이나 응답에서 전달할 실제 데이터라고 요약할 수 있다. 메시지 본문 부분을 표현 데이터 혹인 페이로드(..
-
HTTP 상태코드김영한의 스프링/HTTP웹_기본지식 2024. 1. 22. 16:48
HTTP 상태 코드란 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 각 상태 코드마다 의미가 다르다. 요약을 하면 다음과 같은 정보를 가지고 있다. 1XX(Informational) : 요청이 수신되어 처리중 2XX(Successful) : 요청 정상 처리 3XX(Redirection) : 요청을 완료하려면 추가 행동이 필요 4XX(Client Error) : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행 할 수 없음 5XX(Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태 코드가 나왔을 경우 상위 상태코드로 해석해서 처리하면된다. 미래에 새로운 상태 코드가 추가되어도 위에와 같은 형태를 유지 하기 때문에 해석하기 쉬움. 1XX는 요..
-
클라이언트에서 서버로 데이터 전송김영한의 스프링/HTTP웹_기본지식 2024. 1. 22. 16:00
클라이언트에서 서버로 데이터를 전송하는 상황에는 크게 4가지가 있다. 정적 데이터 조회 이미지, 정적 텍스트 문서 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터 HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 HTML API를 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax) 정적 데이터 조회 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회가 가능하다. 보통은 이미지, 정적 텍스트 문서를 요청 할 때 사용한다. 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터를 사용할 때 사용한다. 즉, 조회 조건을 줄여주는 필터, 조회 결과를 정렬 조건에 주로 사용된다. GET은 쿼리 ..
-
HTTP 메서드김영한의 스프링/HTTP웹_기본지식 2024. 1. 22. 15:16
이번에는 주요 HTTP 메서드에 대해 알아 보도록 하겠다. 먼저 요약을 하자면 다음과 같다. GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체, 해당 리소스가 없으면 생성 PATCH : 리소스 부분 변경 DELETE : 리소스 삭제 1. GET 리소스를 조회 서버에 전달하고 싶은 데이터 있을 경우 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달 메시지 바디를 사용해서 데이터를 전달 할 수 있지만, 지원하는 곳이 많지 않아서 권장하지 않음 2. POST 요청 데이터 처리 메시지 바디를 통해 서버로 요청 데이터 전달 서버는 요청 데이터를 처리 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다. 주로 전달된 데이터로 신규 리소스 등록, 프..
-
Http 특징김영한의 스프링/HTTP웹_기본지식 2024. 1. 22. 14:51
HTTP 특징에 대해 정리 해보자! HTTP 특징 클라이언트 서버 구조 무상태 프로토콜(Stateless), 비연결성 HTTP 메시지 단순함, 확장 가능 1. 클라이언트 서버 구조 Request, Response 구조로 클라이언트는 서버에 요청을 보내고, 응답을 대기한다. 그 후 서버는 요청에 대한 결과를 만들어서 패킷을 만들고 응답한다. 클라이언트와 서버를 완벽히 분리하는 것이 핵심이다. 클라이언트는 UI,UX에 집중을 하고 서버는 비지니스 로직, 데이터 관리에 집중하여 각자의 역할을 수행하는 것이다. 2. 무상태 프로토콜(Stateless) Http는 무상태(Stateless)의 특징을 가지고 있다. 그렇다면 무상태(Stateless)가 무슨 뜻일까? 예시를 통해 알아보자! 먼저 Stateless의 ..
-
URI(Uniform Resource Identifier)김영한의 스프링/HTTP웹_기본지식 2024. 1. 22. 14:04
오늘은 사람들이 자주 혼동하는 단어 URI, URL, URN에 대해 간략히 알아보고 정리하려고 한다. URI는 로케이터(Locator), 이름(Name) 으로 분류될 수 있다. 그렇다면 URI의 뜻은 무엇일까? URI Uniform : 리소스 식별하는 통일된 방식 Resource : 자원, URI로 식별할 수 있는 모든 것 Identifier : 다른 항목과 구분하는데 필요한 정보 즉, URI는 인터넷상의 리소스 자원 자체를 식별하는 고유한 문자열 시퀀스이다. URL과 URN URI에서 확장된 개념으로 리소스가 있는 위치 정보까지 부여된 것이다. URN은 리소스에 이름을 부여한 것이다. 즉, 이 둘 몯 URI에서 추가적인 정보를 제공하는 것이다. 위치는 변할 수 있지만, 이름을 변하지 않는다. 그래서 U..