HTTP 헤더 2 - 캐시와 조건부 요청 캐시 기본 동작 캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해 데이터를 다운로드 받아야 한다. 인터넷 네트워크는 매우 느리고 비싸다 브라우저 로딩 속도가 느리다. 느린 사용자 경험 캐시 적용 캐시 덕분에 캐시 가능시간동안 네트워크를 사용하지 않아도 된다. 비싼 네트워크 사용량을 줄일 수 있다. 브라우저 로딩 속도가 매우 빠르다. 빠른 사용자 경험 캐시 시간 초과 캐시 유효 시간이 초과하면 서버를 통해 데이터를 다시 조회하고 캐시를 갱신한다. 이때 다시 네트워크 다운로드가 발생된다. 캐시 유효 시간이 초과해서 서버에 다시 요청하면 다음 두 가지 상황이 나타난다. 1. 서버에서 기존 데이터를 변경함 2. 서버에서 기존 데이터를 변경하지 않음 캐시 만료후에도 서버에서 데이터를 변경하지 않음 생..
HTTP 헤더 1 - 일반 헤더 HTTP 헤더 용도 HTTP 전송에 필요한 모든 부가정보 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리정보 등등 표준 헤더가 너무 많음 -> https://en.wikipedia.org/wiki/List of HTTP header fields 필요 시 임의의 헤더 추가 가능 분류 - RFC2616(과거) -> 현재 폐기됨 헤더 분류 General 헤더 : 메시지 전체에 적용되는 정보 Request 헤더: 요청정보 Response 헤더 : 응답정보 Entity 헤더 : 엔티티 바디 정보 message body 메시지 본문(message body)은 엔티티 본문(Entity body)을 전달하는 데 사용 엔티티 본문은 요청이나 응답에서 전달할 실제 데..
HTTP 상태코드 상태 코드 -> 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational) : 요청이 수신되어 처리중 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함 2xx(Successful) 클라이언트의 요청을 성공적으로 처리 200 : OK 201 : Created 202 : Accepted -> 요청이 접수되었으나 처리가 완료되지 않았음 배치 처리 같은 곳에서 사용됨 예) 요청 접수 후 1시간 뒤에 배치 프로세스가 요..
HTTP API 설계 예시 HTTP API - 컬렉션 POST 기반 등록 예) 회원 관리 API 제공 HTTP API - 스토어 PUT 기반 등록 예) 정적 컨텐츠 관리, 원격 파일 관리 HTML FORM 사용 웹 페이지 회원 관리 GET, POST만 지원 ※회원 관리 시스템 API 설계 - POST 기반 등록 회원 목록 /members -> GET 회원 등록 /members -> POST 회원 조회 /members/{id} -> GET 회원 수정 /members/{id} -> PATCH, PUT, POST 회원 삭제 /members/{id} -> DELETE POST - 신규 자원 등록 특징 클라이언트는 등록될 리소스의 URI를 모른다 회원등록 /members -> POST POST /members 서버가 새로 등록된 리소스 U..
HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 -> 데이터 전달 방식은 크게 2가지 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 ※4가지 상황 정적 데이터 조회 이미지, 정적 텍스트 문서 -> 쿼리 파라미터 미사용 조회는 GET 사용 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) -> 쿼리 파라미터 사용 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 HTML Form을 통한 데이터 전송 회원가입, 상품 주문, 데이터 변경 HTTP API를 통한 데이터 전송 회..
HTTP 메서드 API URI 고민 리소스의 의미는 무엇인가? 회원을 등록하고 수정하고 조회하는 것이 리소스가 아니다~ 예) 미네랄을 캐라! -> 미네랄이 리소스! 회원이라는 개념 자체가 리소스이다. 리소스를 어떻게 구별하는 것이 좋은가? 회원을 등록하고 수정하고 조회하는 것을 모두 배제 회원이라는 리소스만 식별하면 됨 -> 회원 리소스를 URI에 매핑 리소스와 행위를 분리 URI는 리소스만을 식별 리소스와 해당 리소스를 대상으로 하는 행위를 분리 리소스 : 회원 행위 : 조회, 수정, 등록, 삭제 리소스는 명사, 행위는 동사(미네랄을 캐라) 행위(메소드)는 어떻게 구분? HTTP 메서드 종류(주요 메서드) GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체, 해당 리소스가..
HTTP 기본 HTTP(HyperText Transfer Protocol) HTML, TEXT IMAGE, 영상, 파일, 음성 JSON, XML(API) 거의 모든 형태의 데이터를 전송 가능 서버 간에 데이터를 주고 받을 때도 HTTP 사용 기반 프로토콜 TCP: HTTP/1.1, HTTP/2 UDP: HTTP/3 현재 HTTP/1.1이 주로 사용됨 HTTP 특징 클라이언트 서버 구조 무상태 프로토콜(Stateless), 비연결성 HTTP 메시지 단순함, 확장 가능 클라이언트 서버 구조 Request Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 무상태 프로토콜(Stateless) 서버가 클라이언트의 상태를 보존하지 않음 장점: 서버 확장성 높음(스케일 ..
URI와 웹 브라우저 요청 흐름 URI(Uniform Resource Identifier) URL(Resource Locator), URN(Resource Name)을 포괄한 개념이 URI이다. Uniform : 리소스 식별하는 통일된 방식 Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음) Identifier: 다른 항목과 구분하는데 필요한 정보 URL - Locator: 리소스가 있는 위치를 지정 URN - Name: 리소스에 이름 부여 위치는 변할 수 있지만, 이름은 변하지 않는다. urn:isbn:8960777331 (어떤 책의 isbn URN) URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않음 URL 전체 문법(scheme) scheme://[userinfo@]host[:port][/p..
인터넷 네트워크 기초 IP(Internet Protocol) 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 프로토콜의 한계 비연결성 패킷을 받을 대산이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 중간에 패킷이 사라지면? 패킷이 순서대로 오지 않으면? 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면? 인터넷 프로토콜 스택 4계층 - 애플리케이션 계층 -> HTTP, FTP - 전송 계층 -> TCP, UDP - 인터넷 계층 -> IP - 네트워크 인터페이스 계층 TCP(Transmission Control Protocol, 전송 제어 프로토콜) 연결지향 - TCP 3 way handshake(가상 연결) 데이터 전달 보증 순서..