Skip to content

Latest commit

 

History

History
64 lines (55 loc) · 3.49 KB

File metadata and controls

64 lines (55 loc) · 3.49 KB

HTTP는 웹 상에서 하이퍼텍스트 등의 정보를 주고받는 데 쓰이는 프로토콜로, 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규칙이다. HTTP는 요청(Request)와 응답(Response)로 구성되어 있고, 클라이언트가 요청을 하면 서버가 응답을 하는 구조로 되어 있다.

HTTP 메서드

  • GET

    • 리소스를 조회하는 메서드이다.
    • 서버에 전달하고 싶은 데이터는 query(쿼리스트링)를 통해 전달할 수 있다.
    • 캐싱이 가능하다.
  • POST

    • 요청한 데이터를 처리하는 메서드이다.
    • 메시지 바디를 통해 서버로 요청 데이터 전달한다. (들어온 데이터를 처리하는 모든 기능을 수행할 수 있다.)
    • 대상 리소스가 가지는 의미에 따라 요청에 포함된 표현을 자유롭게 처리하도록 요청한다. 리소스를 생성하는 것 부터 단순히 요청 데이터를 처리하는 작업까지 넒은 범위의 프로세스를 의미할 수 있다.
  • PUT

    • 입력된 데이터로 리소스를 대체하고, 리소스가 없으면 생성한다
    • 클라이언트가 리소스 위치를 알고 URI를 지정해야한다.
    • 일부만 넣으면 나머지는 null이 된다.
  • DELETE

    • 리소스를 삭제한다.
  • PATCH

    • 리소스를 부분적으로 변경한다.

HTTP 메서드의 속성

  • 안전 safe

    호출해도 리소스를 변경하지 않는다.

  • 멱등 idempotent

    몇 번 호출하든 결과가 같다. f(f(x)) = f(x)

    • GET: 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.
    • PUT: 결과를 대체한다. 같은 요청을 하면 남는건 똑같다.
    • DELETE: 결과를 삭제한다. 똑같이 지워진다.
    • POST: 멱등이 아니다. 두 번 호출하면 같은 함수가 중복해서 발생 할 수 있다. 멱등이라면 자동 복구 메커니즘에 활용할 수 있음 (막혔을때 여러번 시도)
  • 캐시 가능 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 상태코드

HTTP 상태 코드(HTTP Status Code)는 클라이언트의 요청에 대한 서버에서 설정해주는 응답(Response) 정보이다.

200번대: 성공

  • 200 OK
  • 201 CREATED 리소스를 성공적으로 생성했음
  • 204 NO CONTENT 성공했으나 응답 본문에 데이터가 없음

400번대: 클라이언트 에러

400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우이다. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생한다.

  • 400 BAD REQUEST 잘못된 요청
  • 401 UNAUTHORIZED 인증 정보가 없거나 잘못됨
  • 403 FORBIDDEN 인증은 됐으나 권한이 없음
  • 404 NOT FOUND 요청한 URL이나 리소스에 대한 정보를 찾을 수 없음
  • 405 METHOD NOT ALLOWED 허용되지 않은 요청 메서드
  • 409 CONFLICT 사용자가 요청하는 리소스가 서버의 리소스와 충돌됨

500번대: 서버 에러

  • 500 INTERNAL SERVER ERROR 서버 내부에서 에러가 발생함