HTTP 상태 코드
📚 HTTP 요청에 대한 처리 상태를 응답하는 코드로 Data를 함께 응답한다. Spring에서는 Response를 커스텀하여 의미있는 메세지를 만들어 사용하기도 한다. ex) 201 Created, Message: 회원 가입이 완료되었습니다!HTTP Response Message 구조


요청이 수신되었으나 처리가 완료되지 않음
주로 Batch 처리에서 사용된다.
ex) 설정한 시간마다 반복적으로 동작하는 특정 작업.
요청은 성공했지만, 응답 데이터가 없음
ex) 저장, 작성버튼 클릭 시

URL이 영구적으로 변경된 경우, 기존 URL을 사용하지 않는다.
ex) /event → /event1
301 Moved Permanently


리다이렉트시 요청 메서드와 본문이 유지된다.
일시 리다이렉션
URI가 일시적으로 변경된 경우
ex) 게시글 작성 후 게시글 목록 페이지로 이동, PRG 패턴
PRG(Post, Redirect, Get) 패턴이란?
PRG 패턴을 적용하지 않는다면?
새로고침을 하게되면 요청이 중복으로 처리된다.

PRG 패턴을 적용 한다면?
새로고침을 하면 GET 요청을 한다.
대표 상태코드
기타 리다이렉션
4xx (클라이언트 에러)
클라이언트측 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없다.
클라이언트의 요청이 잘못되었기 때문에, 같은 요청의 재시도는 실패한다.

클라이언트가 HTTP 요청 내용을 수정 후 보내야 한다.
ex) GET 메소드로 만들어진 API인데 POST로 보낸다?
ex) API 스펙과 일치하지 않을 때, 숫자를 문자로, 문자를 숫자로 등
클라이언트가 리소스에 대한 인증(Authentication)이 필요하다.
응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명한다.
ex) 로그인
서버가 요청을 받았지만 승인 거부
주로 인가(Authorization) 관련문제
ex) 일반 유저, 관리자
요청한 리소스가 서버에 없다.
이를 이용하여 리소스를 숨겨놓기도 한다. 있지만 없는척 가능
서버 오류, 요청은 정상이지만 서버가 처리하지 못함
재시도하면 성공할 수 있다.
ex) 서버가 일정시간 다운되었다가 다시 살아난 경우

Retry-After Header를 사용하면 얼마뒤에 복구되는지 응답할 수 있다.HTTP API 설계 - 잘못된 예시
HTTP 1강 정리
HTTP API 설계 방법
/boards/boards/{id}/boards/boards/{id}/boards/{id}이후 Restful API에 대해 배우며, HTTP API 설계 규칙에 대해 자세히 다룰 예정입니다.
Header 구조

field-name: OWS field-value OWS (OWS : 띄어쓰기 허용)field-name은 대소문자 구분을 하지 않는다.실제 브라우저는 하나의 화면을 구성하기 위해 수많은 HTTP 통신을 진행한다!
개발자도구(F12) → Network 탭 클릭 → Fetch/XHR 탭 클릭 → 우측 Header 정보

text/html; charset=utf-8application/jsongzipidentity : 압축하지 않음을 나타낸다.데이터의 언어를 표현한다.
ex) ko로 되어있으면 한글을 보여주고, en으로 되어있으면 영어로된 페이지를 보여줄 수 있다.
ko
en
Quality Values 줄여서 q 값을 사용한다.
0 ~ 1 사이의 값이 존재하며 1에 가까울수록 우선순위가 높다.
Value가 1인 경우 생략이 가능하다.
ex) Accept-Language: ko-KR,en-US;q=0.9,en;q=0.8
→ 서버에서 지원 가능하다면 우선순위를 기반으로 응답 데이터를 표현한다.
Accept: application/json, text/plain, */* → application/json ⇒ text/plain ⇒ */*Accpet: text/*, text/plain, text/plain;format=flowed, */* → text/plain;format=flowed ⇒ text/plain ⇒ text/* ⇒ */*Accept : 선호하는 미디어 타입
Accept-Charset : 선호하는 문자 인코딩
Accept-Encoding : 선호하는 압축 인코딩
Accept-Language : 선호하는 언어
405 (Method Not Allowed)와 함께 응답된다.
ex) Allow: GET, POST
- **Cookie : 클라이언트가 서버에서 받은 쿠키를 Cookie 헤더를 통해 전송한다.**
- **Secure : 해당 헤더가 적용되면 https인 경우에만 쿠키를 전송한다.**
- 기본적으로 http, https 구분하지 않고 쿠키를 전송한다.
- HTTP + Secure 가 HTTPS 이다.
- **HttpOnly : http 전송에만 사용한다.**
- 자바스크립트에서 쿠키를 접근하지 못하게 만든다.
- **SameSite : 쿠키에 설정된 도메인이 같은 경우만 쿠키를 전송한다.**max-ageno-cacheno-store→ REST 기반으로 서비스 API를 구현한 것, HTTP API를 잘 설계하는 규칙이라고 정리할 수 있다.
자원(Resource)을 이름(Name)으로 구분하여 해당 자원의 상태(정보)를 주고받는 것을 의미한다.
→ URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE,PATCH 등)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 REST라 칭한다.