분류 전체보기 (568) 썸네일형 리스트형 [HTTP] 헤더 - 5 (캐시) HTTP 헤더를 사용한 캐시와 조건부 요청에 대해서 알아본다. 캐시 기본 동작 캐시가 없는 경우 (HTTP 헤더의 사이즈: 0.1mb, HTTP 바디의 사이즈: 1.0mb라고 가정) 요청 GET /car.jpg 응답 HTTP/1.1 200 OK Content-Type: image/jpeg Content-Length: 40000 eyJzdWIiOiJzYWxseUBpbWFzbGFiLmN... 재요청 GET /car.jpg 응답 HTTP/1.1 200 OK Content-Type: image/jpeg Content-Length: 40000 eyJzdWIiOiJzYWxseUBpbWFzbGFiLmN... 첫번째 요청과 두번째 요청 모두 응답 메시지 바디에 같은 데이터가 들어가있다. 이렇게 캐시가 사용되지 않는 경.. [HTTP] 헤더 - 1 (일반 헤더) HTTP 헤더의 역할 그리고 일반적인 헤더의 종류와 그 역할에 대해서 알아본다. HTTP 헤더의 역할 header-field = field-name":" OWS field-value OWS field-name은 대소문자 구분이 없다. 아래의 요청과 응답 부분에서 진하게 적어놓은 부분이 헤더 부분이다. 요청 GET /car?manufacturer=hyundai?modelName=sonata HTTP/1.1 Host: www.google.com 응답 HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 3423 body... 과거 버전(RFC2616)과 현재 버전(RFC723*)의 차이를 알아보자. RFC2616의 헤더 0) POST /.. [HTTP] 상태 코드 (3xx) 3xx (Redirection) 상태 코드에 대해서 알아본다. 요청을 완료하기 위해 유저 에이전트의 추가 조치가 필요하다. 300 (여러 선택 항목, Multiple Choices): 서버가 요청에 따라 여러 조치를 선택할 수 있다. 서버가 사용자 에이전트에 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록을 제공한다. 301 (영구 이동, Moved Permanently): 요청한 페이지를 새 위치로 영구적으로 이동했다. GET 또는 HEAD 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달된다. 302 (임시 이동, Found): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다. 303 (기타 위치 .. [HTTP] 상태 코드 (5xx) **5xx (Server Error) 상태 코드에 대해서 알아본다. 서버 문제로 오류가 발생 하였을 때 사용되는 상태 코드. 오류의 원인이 서버이기 때문에 4xx 상태 코드와는 다르게 재시도시 성공 할 수도 있다. 500 (Internal Server Error) 서버 내부 문제로 오류가 발생했을 때 서버 내부의 오류를 정의하기 애매하면 500 상태 코드를 사용한다. 필자가 이 글을 쓰기전까지 실수하였던 부분이 있다. 예를들어 GET /car/100 을 조회 하였고 결과는 null이었다고 가정해보자. id = 100인 차량을 조회하였을 때 결과가 없는 것은 클라이언트 입장에서는 정상적인 결과이다. 쉽게 말해서 조회한 리소스가 없다는 결과를 얻었기 때문에 에러가 아니다. 하지만 null 인 결과를 수정하려.. [HTTP] 상태 코드 (4xx) 4xx (Client Error) 상태 코드에 대해서 알아본다. 클라이언트의 요청이 잘못되어 서버가 요청을 수행할 수 없다. 중요한 점은 오류의 원인이 클라이언트에게 있기 때문에 같은 형식으로 재요청시 재실패한다는 점이다. 백엔드 개발자들은 4xx 상태 코드를 잘 터트려주어 프론트 개발자들의 디버깅 시간을 줄여주어야한다. 400 (잘못된 요청): 서버가 요청의 구문을 인식하지 못했다. 401 (권한 없음): 이 요청은 인증이 필요하다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다. 상태 코드 이름이 권한 없음(Unauthorized)로 되어 있지만 실제 뜻은 인증 안됨(Unauthenticated)에 더 가깝다. 403 (금지됨): 서버가 요청을 거부하고 있다. (401은 인증 실패,.. [HTTP] 상태 코드 (2xx) 2xx (Successful) 상태 코드에 대해서 알아본다. 클라이언트의 요청을 성공적으로 처리했다는 뜻으로 아래와 같이 대표적으로 사용되는 코드들이 있다. 200 OK 201 Created 202 Accepted 204 No Content 200 OK (요청 성공) 요청 GET /cars/100 HTTP/1.1 Host: localhost:8080 응답 HTTP/1.1 200 OK Content-Type: application/json Content-Length: 34 { "manufacturer": "hyundai", "modelName": "sonata" } 201 Created (요청 성공해서 새로운 리소스가 생성됨) 요청 POST /cars HTTP/1.1 Content-Type: applica.. [HTTP] 상태 코드 (종류) 전반적인 HTTP 상태 코드의 종류를 간략하게 알아본다. 상태 코드: 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위한 코드 1xx (Informational): 요청을 받았으며 프로세스를 계속한다. 2xx (Successful): 요청을 성공적으로 받았으며 인식했고 수용하였다. 3xx (Redirection): 요청 완료를 위해 추가 작업 조치가 필요하다. 4xx (Client Error): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다. 5xx (Server Error): 서버가 명백히 유효한 요청에 대해 충족을 실패했다. 만약 클라이언트에서 모르는 상태 코드가 나타나면 어떻게 해야할까? 현실적으로 클라이언트가 모든 상태 코드를 처리하기는 힘들다. 글을 쓰는 시점의 4xx 상태 코드의 .. [HTTP] API 설계 예시 좋은 HTTP API 설계에 대해서 알아본다. HTTP API - 컬렉션 POST 기반 등록(회원 관리 API 등) HTTP API - 스토어 PUT 기반 등록(정적 컨텐츠 관리, 원격 파일 관리) HTML FORM 사용 웹 페이지 회원 관리(GET, POST만 지원) 차량 관리 시스템 아래는 차량 관리 시스템의 API 설계다. (POST 기반 등록) 차량 목록 /cars -> GET 차량 등록 /cars -> POST 차량 조회 /cars/{id} -> GET 차량 수정 /cars/{id} -> PATCH, PUT, POST 차량 삭제 /cars/{id} -> DELETE POST 기반의 신규 자원(resource)은 다음과 같은 특징을 가진다. 클라이언트는 등록될 리소스의 URI를 모른다. 서버가 새.. 이전 1 ··· 66 67 68 69 70 71 다음