Web
HTTP 헤더 - 캐시와 프록시 캐시, 무효화
📒 캐시 제어 헤더 📝 Cache-Control: 캐시 제어 • "Cache-Control: max-age" -> 초 단위 캐시 유효 시간 (보통 굉장히 길게 설정) • "Cache-Control: no-cache" -> 데이터는 캐시해도 되지만, 중간의 프록시 캐시 서버에서는 아무것도 하면 안되고 항상 원(origin) 서버에서 검증하고 사용 • "Cache-Control: no-store" -> 데이터에 민감한 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제) 📝 Pragma: 캐시 제어(하위 호환) • Pragma: no-cache • HTTP 1.0 하위 호환 * 거의 사용하지 않음 📝 Expires: 캐시 유효 기간(하위 호환) • expires: Mon, 01 Jan 19..
검증 헤더와 조건부 요청
📒 검증 헤더와 조건부 요청 다시 요청한 데이터와 이전에 요청했었던 데이터가 같은지 다른지 어떻게 확인하지? 그래서 등장하는 검증 헤더! 검증 헤더에는 크게 2가지가 있는데, Last-Modified와 ETag. 📌 검증 헤더 - Last-Modified 📝 과정 1. 클라이언트의 요청에 서버가 이렇게 검증 헤더를 추가해서 응답을 보냄. HTTP/1.1 200 OK Content-Type: image/jpeg cache-control: max-age=60 Last-Modified: 2022년 1월 12일 10:00:00 Content-Length: 34012 lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjklasl kjdfl;qkawj9;o4ruawsldkal;skd..
캐시
📒 캐시 기본 동작 📌 캐시가 없다면? • 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 함. • 인터넷 네트워크는 매우 느리고 비쌈. • 브라우저 로딩 속도가 느림. • 느린 사용자 경험😥 📌 캐시를 적용해보자 📝 과정 1. 클라이언트가 요청을 보내면 2. 서버가 이런 응답을 보내는데, HTTP/1.1 200 OK Content-Type: image/jpeg cache-control: max-age=60 Content-Length: 34012 lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjkla slkjdfl;qkawj9;o4ruawsldkal;skdjfa;ow9ejkl3123123 'cache-control'을 포함해서 응답을 보냄. (..
HTTP 헤더 - 일반 헤더
📒 Intro 📌용도 • HTTP 전송에 필요한 모든 부가정보 ... • 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐 시 관리 정보... • 표준 헤더가 너무 많음 • https://en.wikipedia.org/wiki/List_of_HTTP_header_fields • 필요시 임의의 헤더 추가 가능 📌 HTTP BODY • 메시지 본문(message body)을 통해 표현 데이터 전달 • 메시지 본문 = 페이로드(payload) • 표현은 요청이나 응답에서 전달할 실제 데이터 • 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공 • 데이터 유형(html, json), 데이터 길이, 압축 정보 등등 • 참고: 표현 헤더는 표현 메타데이터와, 페이로..
HTTP 상태 코드
📒 상태 코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 📝 1xx (Informational): 요청이 수신되어 처리중 📝 2xx (Successful): 요청 정상 처리 📝 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 📝 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 📝 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 * 클라이언트가 인식할 수 없는 상태 코드를 서버가 반환하면? 첫번째 자리 숫자로 해석해서 처리. (200대인지 400대인지 등) 📒 2xx (Successful): 클라이언트의 요청을 성공적으로 처리 📝 200 OK: 요청 성공 📝 201 Create..
HTTP API 설계 예시
📒 HTTP API - 컬렉션 📌 POST 기반 등록 📝예) 회원 관리 API 제공 • 회원 목록 /members -> GET • 회원 등록 /members -> POST • 회원 조회 /members/{id} -> GET • 회원 수정 /members/{id} -> PATCH, PUT, POST • 회원 삭제 /members/{id} -> DELETE *주의! 회원 수정시 PUT은 회원 정보를 하나도 빠짐없이 전부 다 전송해야 하므로 PATCH!! * 단, 게시글 수정의 경우는 다름. 게시글은 부분 수정이 아니라 게시글 전체를 클라이언트가 다시 서버에 보내니까 PUT! 이것저것 그냥 다 애매하면 POST 쓰셈 📝 POST - 신규 자원 등록 특징 1. 클라이언트가 "username": "hello", ..