.NET의 HTTP 지원
하이퍼텍스트 전송 프로토콜(또는 HTTP)은 웹 서버에서 리소스를 요청하기 위한 프로토콜입니다. System.Net.Http.HttpClient 클래스는 URI로 식별된 리소스에서 HTTP 요청을 보내고 HTTP 응답을 수신하는 기능을 노출합니다. 많은 유형의 리소스를 웹에서 사용할 수 있으며 HTTP는 이러한 리소스에 액세스하기 위한 요청 메서드 집합을 정의합니다.
HTTP 요청 메서드
요청 메서드는 먼저 동사 다음과 같은 특성으로 여러 요인을 통해 구분됩니다.
- 요청 메서드는 여러 번 성공적으로 처리되어도 결과를 변경하지 않을 경우 idempotent입니다. 자세한 내용은 RFC 9110: 9.2.2를 참조하세요. Idempotent 메서드.
- 요청 메서드는 해당 응답을 다시 사용하도록 저장할 수 있는 경우 캐시 가능한. 자세한 내용은 RFC 9110: 섹션 9.2.3을 참조하세요. 메서드 및 캐싱.
- 요청 메서드는 리소스의 상태를 수정하지 않는 경우안전한 메서드로 간주됩니다. 모든 안전한 메서드는 멱등 있지만 모든 멱등 메서드는 안전한 간주되지 않습니다. 자세한 내용은 RFC 9110: 섹션 9.2.1을 참조하세요. 안전한 메서드.
HTTP 메서드 | idempotent이다 | 캐시할 수 있나요? | 안전합니다. |
---|---|---|---|
GET |
✔️ 예 | ✔️ 예 | ✔️ 예 |
POST |
❌ 아니요 | ️ ⚠†드물게 | ❌ 아니요 |
PUT |
✔️ 예 | ❌ 아니요 | ❌ 아니요 |
PATCH |
❌ 아니요 | ❌ 아니요 | ❌ 아니요 |
DELETE |
✔️ 예 | ❌ 아니요 | ❌ 아니요 |
HEAD |
✔️ 예 | ✔️ 예 | ✔️ 예 |
OPTIONS |
✔️ 예 | ❌ 아니요 | ✔️ 예 |
TRACE |
✔️ 예 | ❌ 아니요 | ✔️ 예 |
CONNECT |
❌ 아니요 | ❌ 아니요 | ❌ 아니요 |
†
POST
메서드는 적절한Cache-Control
또는Expires
응답 헤더가 있는 경우에만 캐시할 수 있습니다. 이것은 실제로 매우 드문 일입니다.
HTTP 상태 코드
.NET은 대부분의 인터넷 트래픽을 차지하는 HTTP 프로토콜에 대해 포괄적인 지원을 제공합니다. HttpClient 자세한 내용은 HttpClient 클래스사용하여 HTTP 요청 만들기를 참조하세요. 애플리케이션은 HttpRequestException을(를) 사용하여 HTTP 프로토콜 오류를 처리합니다. HTTP 상태 코드는 호출된 메서드가 응답 메시지를 반환하지 않는 경우 HttpResponseMessage에 HttpResponseMessage.StatusCode 또는 HttpRequestException에 HttpRequestException.StatusCode로 보고됩니다. 오류 처리에 대한 자세한 내용은 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사용하여 변경할 수 있습니다.
클라이언트 오류 상태 코드
클라이언트 오류 상태 코드는 클라이언트의 요청이 잘못되었음을 나타냅니다.
서버 오류 상태 코드
서버 오류 상태 코드는 서버가 요청을 처리하지 못하는 예기치 않은 조건이 발생했음을 나타냅니다.
참고하세요
- HttpClient 클래스 사용하여 HTTP 요청을 만듭니다.
- .NET을 사용하여 HTTP 클라이언트 팩터리
- HttpClient 사용하기 위한 지침
- .NET 네트워킹 개선
.NET