.NET의 HTTP 지원
HTTP(Hypertext Transfer Protocol)는 웹 서버에서 리소스를 요청하기 위한 프로토콜입니다. System.Net.Http.HttpClient 클래스는 URI로 식별되는 리소스에서 HTTP 요청을 보내고 HTTP 응답을 받는 기능을 노출합니다. 웹에서는 다양한 유형의 리소스를 사용할 수 있으며 HTTP는 이러한 리소스에 액세스하기 위한 요청 메서드 집합을 정의합니다.
HTTP 요청 메서드
요청 메서드는 해당 동사뿐만 아니라 다음과 같은 특성을 포함하여 여러 요인을 통해 구분됩니다.
- 결과를 변경하지 않고 여러 번 성공적으로 처리할 수 있는 경우 요청 메서드는 멱등원입니다. 자세한 내용은 RFC 9110: 9.2.2. 멱등원 메서드를 참조하세요.
- 해당 응답을 다시 사용할 수 있게 저장할 수 있는 경우 요청 메서드는 캐시 가능합니다. 자세한 내용은 RFC 9110: 섹션 9.2.3. 메서드 및 캐싱을 참조하세요.
- 리소스의 상태를 수정하지 않는 경우 요청 메서드는 안전한 메서드로 간주됩니다. 모든 안전한 메서드는 멱등원이지만 모든 멱등원 메서드가 안전한 것으로 간주되지는 않습니다. 자세한 내용은 RFC 9110: 섹션 9.2.1. 안전한 메서드를 참조하세요.
HTTP 메서드 | 멱등원 | 캐시 가능 | 안전 |
---|---|---|---|
GET |
✔️ 예 | ✔️ 예 | ✔️ 예 |
POST |
❌ 아니요 | ⚠️ †거의 없음 | ❌ 아니요 |
PUT |
✔️ 예 | ❌ 아니요 | ❌ 아니요 |
PATCH |
❌ 아니요 | ❌ 아니요 | ❌ 아니요 |
DELETE |
✔️ 예 | ❌ 아니요 | ❌ 아니요 |
HEAD |
✔️ 예 | ✔️ 예 | ✔️ 예 |
OPTIONS |
✔️ 예 | ❌ 아니요 | ✔️ 예 |
TRACE |
✔️ 예 | ❌ 아니요 | ✔️ 예 |
CONNECT |
❌ 아니요 | ❌ 아니요 | ❌ 아니요 |
†
POST
메서드는 적절한Cache-Control
또는Expires
응답 헤더가 있는 경우에만 캐시할 수 있습니다. 이는 실제로 매우 드문 일입니다.
HTTP 상태 코드
.NET에서는 HttpClient를 사용하여 모든 인터넷 트래픽의 대부분을 구성하는 HTTP 프로토콜을 포괄적으로 지원합니다. 자세한 내용은 HttpClient 클래스를 사용하여 HTTP 요청 만들기를 참조하세요. 애플리케이션은 HttpRequestException을 catch하여 HTTP 프로토콜 오류를 수신합니다. HTTP 상태 코드는 HttpResponseMessage.StatusCode를 사용하여 HttpResponseMessage에서 보고되거나 호출된 메서드가 응답 메시지를 반환하지 않는 경우 HttpRequestException.StatusCode를 사용하여 HttpRequestException에서 보고됩니다. 오류 처리에 대한 자세한 내용은 HTTP 오류 처리를 참조하고, 상태 코드에 대한 자세한 내용은 RFC 9110, HTTP 의미 체계: 상태 코드를 참조하세요.
정보 상태 메시지
정보 상태 코드는 중간 응답을 반영합니다. 대부분의 중간 응답(예: HttpStatusCode.Continue)은 HttpClient에 의해 내부적으로 처리되며 사용자에게 노출되지 않습니다.
HTTP 상태 코드 | HttpStatusCode |
---|---|
100 |
HttpStatusCode.Continue |
101 |
HttpStatusCode.SwitchingProtocols |
102 |
HttpStatusCode.Processing |
103 |
HttpStatusCode.EarlyHints |
성공 상태 코드
성공 상태 코드는 클라이언트의 요청이 성공적으로 수신, 이해 및 수락되었음을 나타냅니다.
HTTP 상태 코드 | HttpStatusCode |
---|---|
200 |
HttpStatusCode.OK |
201 |
HttpStatusCode.Created |
202 |
HttpStatusCode.Accepted |
203 |
HttpStatusCode.NonAuthoritativeInformation |
204 |
HttpStatusCode.NoContent |
205 |
HttpStatusCode.ResetContent |
206 |
HttpStatusCode.PartialContent |
207 |
HttpStatusCode.MultiStatus |
208 |
HttpStatusCode.AlreadyReported |
226 |
HttpStatusCode.IMUsed |
리디렉션 상태 코드
리디렉션 상태 코드를 사용하려면 사용자 에이전트가 요청을 이행하기 위해 작업을 수행해야 합니다. 자동 리디렉션은 기본적으로 켜져 있으며 HttpClientHandler.AllowAutoRedirect 또는 SocketsHttpHandler.AllowAutoRedirect를 사용하여 변경할 수 있습니다.
클라이언트 오류 상태 코드
클라이언트 오류 상태 코드는 클라이언트의 요청이 잘못되었음을 나타냅니다.
서버 오류 상태 코드
서버 오류 상태 코드는 서버가 요청을 이행하지 못하는 예기치 않은 조건이 발생했음을 나타냅니다.
추가 정보
.NET