HTTP는 웹 상에서 하이퍼텍스트 등의 정보를 주고받는 데 쓰이는 프로토콜로, 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규칙이다. HTTP는 요청(Request)와 응답(Response)로 구성되어 있고, 클라이언트가 요청을 하면 서버가 응답을 하는 구조로 되어 있다.
HTTP 메서드
Section titled “HTTP 메서드”-
- 리소스를 조회하는 메서드이다.
- 서버에 전달하고 싶은 데이터는 query(쿼리스트링)를 통해 전달할 수 있다.
- 캐싱이 가능하다.
-
- 요청한 데이터를 처리하는 메서드이다.
- 메시지 바디를 통해 서버로 요청 데이터 전달한다. (들어온 데이터를 처리하는 모든 기능을 수행할 수 있다.)
- 대상 리소스가 가지는 의미에 따라 요청에 포함된 표현을 자유롭게 처리하도록 요청한다. 리소스를 생성하는 것 부터 단순히 요청 데이터를 처리하는 작업까지 넒은 범위의 프로세스를 의미할 수 있다.
-
- 입력된 데이터로 리소스를 대체하고, 리소스가 없으면 생성한다
- 클라이언트가 리소스 위치를 알고 URI를 지정해야한다.
- 일부만 넣으면 나머지는 null이 된다.
-
DELETE
Section titled “DELETE”- 리소스를 삭제한다.
-
- 리소스를 부분적으로 변경한다.
HTTP 메서드의 속성
Section titled “HTTP 메서드의 속성”-
안전 safe
Section titled “안전 safe”호출해도 리소스를 변경하지 않는다.
-
멱등 idempotent
Section titled “멱등 idempotent”몇 번 호출하든 결과가 같다. f(f(x)) = f(x)
- GET: 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.
- PUT: 결과를 대체한다. 같은 요청을 하면 남는건 똑같다.
- DELETE: 결과를 삭제한다. 똑같이 지워진다.
- POST: 멱등이 아니다. 두 번 호출하면 같은 함수가 중복해서 발생 할 수 있다. 멱등이라면 자동 복구 메커니즘에 활용할 수 있음 (막혔을때 여러번 시도)
-
캐시 가능 cacheable
Section titled “캐시 가능 cacheable”- 웹브라우저에 임시 저장 (앞주머니)
- GET, HEAD는 캐시로 사용 (POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않음)
-
HTTP 메소드 RFC 요청BODY 응답BODY 안전 멱등 캐시가능 GET RFC7231 X O O O O POST RFC7231 O O X X O PUT RFC7231 O O X O X DELETE RFC7231 X O X O X PATCH RFC5789 O O X X O
HTTP 상태코드
Section titled “HTTP 상태코드”HTTP 상태 코드(HTTP Status Code)는 클라이언트의 요청에 대한 서버에서 설정해주는 응답(Response) 정보이다.
200번대: 성공
Section titled “200번대: 성공”- 200 OK
- 201 CREATED 리소스를 성공적으로 생성했음
- 204 NO CONTENT 성공했으나 응답 본문에 데이터가 없음
400번대: 클라이언트 에러
Section titled “400번대: 클라이언트 에러”400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우이다. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생한다.
- 400 BAD REQUEST 잘못된 요청
- 401 UNAUTHORIZED 인증 정보가 없거나 잘못됨
- 403 FORBIDDEN 인증은 됐으나 권한이 없음
- 404 NOT FOUND 요청한 URL이나 리소스에 대한 정보를 찾을 수 없음
- 405 METHOD NOT ALLOWED 허용되지 않은 요청 메서드
- 409 CONFLICT 사용자가 요청하는 리소스가 서버의 리소스와 충돌됨
500번대: 서버 에러
Section titled “500번대: 서버 에러”- 500 INTERNAL SERVER ERROR 서버 내부에서 에러가 발생함