HTTP 7

[HTTP] 캐시(cache)와 조건부 요청

학습내용 캐시 기본 동작 검증 헤더와 조건부 요청 프록시 캐시 캐시 무효화 1. 캐시가 없을 경우 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 인터넷 네트워크는 매우 느리고 비싸다. 브라우저 로딩 속도가 느리다. 느린 사용자 경험 2. 캐시를 적용할 경우 캐시 가능 시간(유효 시간)동안 네트워크를 사용하지 않아도 된다. -> 유효시간이 남아있는 경우에도 매번 검증이 필요한 경우 네트워크 통신이 이루어지지만 Header의 메타 데이터만 주고 받아 데이터 원문이 담긴 Body는 생략되기 때문에 가볍다, 물론 데이터의 수정이 이루어진 경우를 대비해 검증 Header를 가지고 조건부 요청을 해야한다. 검증 헤더 : Last-Modifed ,ETag 조건부 요청 헤더 : If-..

HTTP 2021.12.06

[HTTP] HTTP 상태코드

HTTP 상태코드 - 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational) : 요청이 수신되어 처리중 2xx (Successful) : 요청을 정상적으로 처리함 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요함 4xx (Client Error) : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) : 서버 오류, 서버가 정상적으로 요청을 처리하지 못함 - 만약 모르는 상태 코드가 나타나면? - 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? 해결방법 : 클라이언트는 상위 상태코드로 해석해서 해결하면 된다 예) 299 ??? -> 2xx (Successful) 451 ??? -> 4..

HTTP 2021.11.22

[HTTP] 데이터 요청 - HTTP API(REST API)

HTTP API(REST API) HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PATCH HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다. 먼저 1. 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고 읽어 본 후 2. JSON 형식으로 전송하고 읽어 보자. 1. 단순 TEXT 전송 @WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-body-string") public class RequestBodyStringServlet extends HttpServl..

HTTP 2021.07.26

[HTTP] 데이터 요청 - POST

POST HTML Form POST 요청 방식은 클라이언트에서 서버로 리소스를 생성하거나 업데이트 하기위해 사용된다. 예) 회원 가입, 상품 주문 등에서 사용하는 방식이다. 특징 - 메시지 바디에 데이터가 들어가기 때문에 컨텐트 타입이 존재한다. -> content-type : application/x-www-form-urlencoded - 메시지 바디에 쿼리 파리미터 형식(GET 방식)으로 데이터를 전달한다 -> username=hello&age=20 예) 아래와 같은 웹 화면에 key(username, age)와 value를 담아서 전송을 하면 웹 브라우저는 다음 형식으로 HTTP 메시지를 만든다. - Request URL : http://localhost:8080/request-param - con..

HTTP 2021.07.25

[HTTP] 데이터 요청 - GET

GET 쿼리 파라미터 GET 요청 방식은 클라이언트에서 서버로 정보를 조회하기 위해 사용된다. GET 요청의 일부로서 메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달한다. 예) 검색 용어, 날짜 범위, 필터, 페이징, 쿼리를 정의하는 기타 정보 쿼리 파라미터는 URL에 다음과 같이 '?'로 시작하고, 추가 파라미터는 '&'로 구분한다. 예) http://localhost:8080/request-param?username=hello&age=20 서버에서는 'HttpServletRequest'가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다. //단일 파라미터 조회 String username = request.getParameter("username"); //파라..

HTTP 2021.07.25

[HTTP] HTTP 데이터 요청 3가지

* HTTP 요청메시지를 통해 클라이언트에서 서버로 데이터를 요청하는 방법은 세가지로 정리가 된다. 1. GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이 URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 - GET 방식 정리 글 - https://cornarong.tistory.com/29?category=997186 [HTTP] 데이터 요청 - GET GET 쿼리 파라미터 GET 요청 방식은 클라이언트에서 서버로 정보를 조회하기 위해 사용된다. GET 요청의 일부로서 메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달한다. 예) 검색 cornarong.tistory.com 2. POST - HT..

HTTP 2021.07.24

[Spring] 웹 서버 vs 웹 어플리케이션 서버

웹 서버(WS)와 웹 어플리케이션 서버(WAS) 웹 서버 (Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적(파일) HTML, CSS, JS, 이미지, 영상 예) NGINX, APACHE 웹 어플리케이션 서버 (WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API (JSON) 서블릿, JSP, 스프링 MVC 예) Tomcat, Jetty, Undertow 웹 서버와 웹 어플리케이션 서버의 차이점 간단하게 차이점을 구분하면 사용하는 기능에 따라 나누어진다. 웹 서버(WS) 웹 어플리케이션 서버(WAS) 정적(파일) HTM..

Spring 2021.07.22