검색했을 때, 검색한 결과 데이터를 가져오기 위해 구글 서버 주소를 찾아 HTTP 요청 메시지를 패킷 안에 담아 구글 서버에게 전달합니다.
-> 구글 서버는 전달받은 메시지를 분석해서 HTTP 응답 메시지를 패킷에 담아 웹 브라우저에 전달합니다.
-> 웹 브라우저는 전달받은 데이터로 화면을 보여줍니다.
GET
클라이언트가 /users/10 데이터를 요청
-> 서버에서 해당 메시지에 맞는 데이터를 찾아 클라이언트에게 보내주게 된다
-> HTTP 응답 메시지의 바디 부분에서 해당 데이터 확인할 수 있다
POST
클라이언트에서 서버의 users에 데이터 요청
-> 서버에서는 users에 신규 리소스 식별자를 생성해서 데이터를 등록한다
-> header 필드에 Location 값이 추가된 응답 데이터를 보내준다
-> Location은 신규 리소스 주소를 가리키기 때문에 /users/11
-> 신규 리소스 생서에 대한 상태코드인 201이 포함된 것을 함께 확인할 수 있다
PUT
클라이언트에서 users/11에 데이터를 요청
-> 서버에서는 원래 있던 데이터를 요청받은 데이터로 변경한다
-> 만약에 필드값이 없는 데이터를 보내게 되면, 기존 필드값이 사라지는 것
(POST 와의 차이점❗️)
POST vs PUT
PUT: 리소스의 주소를 정확히 알고 있어야 합니다. /users/11
POST: /users 으로 가능합니다.
PATCH
변경하고자 하는 데이터를 서버에 요청한다
-> 해당 부분만 변경된다
DELETE
클라이언트에서 요청을 보내면
-> 해당 리소스 삭제한다
클라이언트가 보낸 요청의 처리가 어떻게 됐는지 상태를 응답에서 알려줍니다.
- 200 OK (자주 볼 수 있음 ⭐️)
요청 성공
- 201 Created (자주 볼 수 있음 ⭐️)
요청 성공해서 새로운 리소스가 생성된다
- 202 Accepted
요청을 수신했지만 아직 처리가 완료되지 않음
- 204 No Content
요청을 성공했지만, 응답 페이로드 본문에 보낼 데이터가 없음
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 307 Temporary Redirect
- 308 Permanent Redirect
300번대 응답 코드는 요청 완료를 위해 웹 브라우저에서 추가 작업 조치가 필요합니다.
웹 브라우저는 300번대 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동합니다. (자동 리다이렉트)
자동 리다이렉트
Location: /새로운 url 헤더가 300번대 응답의 결과로 포함되어 있다는 것은 /coke --> /zero-coke 으로 변경되었다는 것입니다. 변경된 주소를 Location 헤더로 보내줄 수 있다면, 현재 Location 위치로 자동으로 보내줍니다
해당 리소스가 있는 같은 리소스인지 어떻게 알 수 있을까요 ?
Response Headers의 etag 값 == Request Headers의 if-none-match: etag 값 을 비교하여 알 수 있습니다.
etag 값이 다르다면, 새로운 리소스를 보내줘야 합니다.
똑같다면, 캐시에서 해당 리소스 사용하면 됩니다.
서버에서 비교하여 응답 코드를 304 또는 200 으로 보내주게 됩니다.
많은 도움이 되었읍니다 ^^..