CS 지식

HTTP 메서드 와 상태 코드

이제하네 2024. 7. 24. 23:18

HTTP란 HyperText Transfer Protocol 의 약자로 웹에서 클라이언트와 서버 간의 데이터를 주고받기위한 프로토콜로 HTTP메서드는 이러한 통신해서 수행할 동작을 정의

1. GET

GET 메서드는 서버에서 데이터를 요청할 때 사용됩니다. 클라이언트가 서버에 특정 리소스를 요청하면 서버는 해당 리소스를 응답으로 반환합니다. 중요한 점은 GET 요청은 서버의 상태나 데이터를 변경하지 않는다는 것입니다. 주로 데이터를 조회하거나 리소스를 가져올 때 사용됩니다.

GET 메서드는 브라우저 주소창에 URL을 입력하거나 링크를 클릭할 때 자동으로 사용됩니다. 이 메서드는 캐싱이 가능하며, 브라우저 히스토리에 남고, 즐겨찾기에도 추가될 수 있습니다. 따라서 주로 읽기 전용 요청에 적합합니다.

2. POST

POST 메서드는 서버에 데이터를 전송하여 새로운 리소스를 생성하거나 기존 리소스를 변경할 때 사용됩니다. 주로 폼 데이터를 전송하거나 파일을 업로드할 때 사용됩니다.

POST 요청은 GET 요청과 달리 서버의 상태를 변경할 수 있습니다. 예를 들어, 새로운 사용자 계정을 생성하거나, 블로그 게시물을 작성할 때 POST 메서드를 사용합니다. POST 요청은 브라우저 히스토리에 남지 않으며, 즐겨찾기에 추가할 수 없습니다. 또한, POST 요청은 멱등성이 없습니다. 즉, 동일한 POST 요청을 여러 번 보내면 그만큼 리소스가 여러 개 생성될 수 있습니다.

3. PUT

PUT 메서드는 서버에 지정된 리소스를 생성하거나 업데이트할 때 사용됩니다. 클라이언트가 지정한 URL에 리소스가 존재하지 않으면 새로 생성하고, 존재하면 해당 리소스를 업데이트합니다.

PUT 메서드는 멱등성을 갖습니다. 동일한 PUT 요청을 여러 번 보내도 결과는 동일합니다. 따라서 클라이언트는 리소스를 안전하게 업데이트할 수 있습니다. 예를 들어, 특정 사용자 프로필 정보를 업데이트할 때 PUT 메서드를 사용할 수 있습니다.

4. DELETE

DELETE 메서드는 서버에서 지정된 리소스를 삭제할 때 사용됩니다. 이 메서드를 사용하면 서버의 데이터가 삭제되므로 주의해서 사용해야 합니다.

DELETE 메서드도 멱등성을 갖습니다. 동일한 DELETE 요청을 여러 번 보내도 결과는 동일합니다. 예를 들어, 사용자가 계정을 삭제하거나 게시물을 삭제할 때 DELETE 메서드를 사용합니다.

5. PATCH

다섯 번째로 PATCH 메서드입니다. PATCH 메서드는 리소스의 일부를 업데이트할 때 사용됩니다. PUT 메서드가 전체 리소스를 업데이트하는 반면, PATCH 메서드는 부분적인 업데이트를 수행합니다.

PATCH 메서드는 특정 필드만 업데이트할 때 유용합니다. 예를 들어, 사용자의 이메일 주소만 변경할 때 PATCH 메서드를 사용할 수 있습니다. PATCH 요청은 멱등성을 갖지 않을 수 있습니다. 동일한 PATCH 요청을 여러 번 보내면 그만큼 리소스의 상태가 여러 번 변경될 수 있습니다.

 

HTTP 상태 코드란 클라이언트가 보낸 요청에 대해 서버가 응답한 결과를 나타내는 숫자 코드입니다. 이 코드는 클라이언트가 요청이 성공했는지, 추가 조치가 필요한지, 오류가 발생했는지 등을 알 수 있게 해줍니다.

1. 1xx (정보)

100 Continue

  • 의미: 클라이언트가 요청의 일부를 보내면 서버가 계속해서 요청을 보내도록 지시할 때 사용합니다.
  • 사용 상황: 대규모 POST 요청을 보낼 때 서버가 클라이언트에게 계속해서 데이터를 전송하도록 허가할 때.

2. 2xx (성공)

200 OK

  • 의미: 요청이 성공적으로 수행되었음을 나타냅니다.
  • 사용 상황: GET 요청에 대해 요청한 리소스를 반환할 때, POST 요청에 대해 데이터를 성공적으로 처리했을 때.

201 Created

  • 의미: 요청이 성공적으로 수행되었으며, 새로운 리소스가 생성되었음을 나타냅니다.
  • 사용 상황: POST 요청으로 새로운 리소스가 생성되었을 때.

204 No Content

  • 의미: 요청이 성공적으로 수행되었으나 반환할 콘텐츠가 없음을 나타냅니다.
  • 사용 상황: PUT 요청으로 리소스가 성공적으로 업데이트되었으나 반환할 데이터가 없을 때.

3. 3xx (리다이렉션)

301 Moved Permanently

  • 의미: 요청한 리소스가 새로운 URL로 영구적으로 이동했음을 나타냅니다.
  • 사용 상황: 리소스의 URL이 변경되었을 때 클라이언트가 새로운 URL을 사용하도록 안내할 때.

302 Found

  • 의미: 요청한 리소스가 일시적으로 다른 URL에 존재함을 나타냅니다.
  • 사용 상황: 리소스가 일시적으로 다른 URL에 위치할 때.

304 Not Modified

  • 의미: 클라이언트가 조건부 GET 요청을 보냈을 때 리소스가 수정되지 않았음을 나타냅니다.
  • 사용 상황: 캐시된 리소스를 사용할 수 있을 때.

4. 4xx (클라이언트 오류)

400 Bad Request

  • 의미: 서버가 요청을 이해할 수 없거나 잘못된 구문으로 인해 요청을 처리할 수 없음을 나타냅니다.
  • 사용 상황: 잘못된 요청 데이터를 보냈을 때.

401 Unauthorized

  • 의미: 요청이 인증되지 않았음을 나타냅니다.
  • 사용 상황: 인증이 필요한 리소스에 대해 인증되지 않은 요청이 들어왔을 때.

403 Forbidden

  • 의미: 서버가 요청을 이해했지만 권한 때문에 요청을 거부했음을 나타냅니다.
  • 사용 상황: 인증된 사용자가 권한이 없는 리소스에 접근하려 할 때.

404 Not Found

  • 의미: 요청한 리소스를 찾을 수 없음을 나타냅니다.
  • 사용 상황: 존재하지 않는 페이지나 리소스를 요청했을 때.

405 Method Not Allowed

  • 의미: 요청한 메서드가 리소스에서 허용되지 않음을 나타냅니다.
  • 사용 상황: 지원하지 않는 HTTP 메서드로 요청했을 때.

409 Conflict

  • 의미: 요청이 현재 서버의 상태와 충돌이 발생했음을 나타냅니다.
  • 사용 상황: 데이터베이스에 이미 존재하는 리소스를 생성하려 할 때.

429 Too Many Requests

  • 의미: 클라이언트가 너무 많은 요청을 보냈음을 나타냅니다.
  • 사용 상황: 클라이언트가 일정 시간 내에 너무 많은 요청을 보냈을 때.

5. 5xx (서버 오류)

500 Internal Server Error

  • 의미: 서버가 요청을 처리하는 동안 예상치 못한 오류가 발생했음을 나타냅니다.
  • 사용 상황: 서버에서 발생한 모든 일반적인 오류.

502 Bad Gateway

  • 의미: 게이트웨이나 프록시 서버가 상위 서버로부터 잘못된 응답을 받았음을 나타냅니다.
  • 사용 상황: 프록시 서버가 상위 서버로부터 잘못된 응답을 받을 때.

503 Service Unavailable

  • 의미: 서버가 일시적으로 과부하 또는 유지 보수로 인해 요청을 처리할 수 없음을 나타냅니다.
  • 사용 상황: 서버가 일시적으로 과부하 상태이거나 유지 보수 중일 때.

504 Gateway Timeout

  • 의미: 게이트웨이 또는 프록시 서버가 상위 서버로부터 응답을 받을 수 없음을 나타냅니다.
  • 사용 상황: 프록시 서버가 상위 서버로부터 응답을 기다리다 시간 초과가 발생했을 때.

'CS 지식' 카테고리의 다른 글

MVC 패턴  (0) 2024.08.11
객체 지향  (0) 2024.08.01
세션 ,토큰 , 쿠키  (0) 2024.07.15
OAuth  (0) 2024.07.10
RESTful API: 개념과 구현  (0) 2024.07.04