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