HTTP-ondersteuning in .NET
Hypertext Transfer Protocol (of HTTP) is een protocol voor het aanvragen van resources vanaf een webserver. De System.Net.Http.HttpClient klasse biedt de mogelijkheid om HTTP-aanvragen te verzenden en HTTP-antwoorden te ontvangen van een resource die is geïdentificeerd door een URI. Veel typen resources zijn beschikbaar op internet en HTTP definieert een set aanvraagmethoden voor toegang tot deze resources.
HTTP-aanvraagmethoden
De aanvraagmethoden worden onderscheiden via verschillende factoren, eerst door hun werkwoord , maar ook door de volgende kenmerken:
- Een aanvraagmethode is idempotent als deze meerdere keren kan worden verwerkt zonder het resultaat te wijzigen. Zie RFC 9110: 9.2.2 voor meer informatie. Idempotente methoden.
- Een aanvraagmethode kan in de cache worden opgeslagen wanneer het bijbehorende antwoord kan worden opgeslagen voor hergebruik. Zie RFC 9110: Sectie 9.2.3 voor meer informatie. Methoden en caching.
- Een aanvraagmethode wordt beschouwd als een veilige methode als deze de status van een resource niet wijzigt. Alle veilige methoden zijn ook idempotent, maar niet alle idempotente methoden worden beschouwd als veilig. Zie RFC 9110: Sectie 9.2.1 voor meer informatie. Veilige methoden.
HTTP-methode | Is idempotent | Kan in de cache worden opgeslagen | Is veilig |
---|---|---|---|
GET |
✔️ Ja | ✔️ Ja | ✔️ Ja |
POST |
❌ Nee | ⚠† !Rarely | ❌ Nee |
PUT |
✔️ Ja | ❌ Nee | ❌ Nee |
PATCH |
❌ Nee | ❌ Nee | ❌ Nee |
DELETE |
✔️ Ja | ❌ Nee | ❌ Nee |
HEAD |
✔️ Ja | ✔️ Ja | ✔️ Ja |
OPTIONS |
✔️ Ja | ❌ Nee | ✔️ Ja |
TRACE |
✔️ Ja | ❌ Nee | ✔️ Ja |
CONNECT |
❌ Nee | ❌ Nee | ❌ Nee |
†De
POST
methode kan alleen in de cache worden opgeslagen wanneer de juisteCache-Control
headers ofExpires
antwoordheaders aanwezig zijn. Dit is in de praktijk zeer ongebruikelijk.
HTTP-statuscode
.NET biedt uitgebreide ondersteuning voor het HTTP-protocol, dat rekening houdt met het meeste internetverkeer, met de HttpClient. Zie HTTP-aanvragen maken met de HttpClient-klasse voor meer informatie. Toepassingen ontvangen HTTP-protocolfouten door een HttpRequestException. HTTP-statuscodes worden gerapporteerd met HttpResponseMessage de HttpResponseMessage.StatusCode of in HttpRequestException het geval de HttpRequestException.StatusCode aangeroepen methode geen antwoordbericht retourneert. Zie HTTP-foutafhandeling voor meer informatie over foutafhandeling en zie RFC 9110, HTTP-Semantiek: Statuscodes voor meer informatie over foutafhandeling.
Informatieve statuscodes
De informatieve statuscodes weerspiegelen een tussentijdse reactie. De meeste tussentijdse antwoorden worden bijvoorbeeld HttpStatusCode.Continueintern verwerkt en HttpClient worden nooit aan de gebruiker blootgesteld.
HTTP-statuscode | HttpStatusCode |
---|---|
100 |
HttpStatusCode.Continue |
101 |
HttpStatusCode.SwitchingProtocols |
102 |
HttpStatusCode.Processing |
103 |
HttpStatusCode.EarlyHints |
Geslaagde statuscodes
De geslaagde statuscodes geven aan dat de aanvraag van de client is ontvangen, begrepen en geaccepteerd.
HTTP-statuscode | 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 |
Omleidingsstatuscodes
Omleidingsstatuscodes vereisen dat de gebruikersagent actie onderneemt om te voldoen aan de aanvraag. Automatische omleiding is standaard ingeschakeld, kan worden gewijzigd met HttpClientHandler.AllowAutoRedirect of SocketsHttpHandler.AllowAutoRedirect.
HTTP-statuscode | HttpStatusCode |
---|---|
300 |
HttpStatusCode.MultipleChoices of HttpStatusCode.Ambiguous |
301 |
HttpStatusCode.MovedPermanently of HttpStatusCode.Moved |
302 |
HttpStatusCode.Found of HttpStatusCode.Redirect |
303 |
HttpStatusCode.SeeOther of HttpStatusCode.RedirectMethod |
304 |
HttpStatusCode.NotModified |
305 |
HttpStatusCode.UseProxy |
306 |
HttpStatusCode.Unused |
307 |
HttpStatusCode.TemporaryRedirect of HttpStatusCode.RedirectKeepVerb |
308 |
HttpStatusCode.PermanentRedirect |
Clientfoutstatuscodes
De foutcodes van de client geven aan dat de aanvraag van de client ongeldig is.
Serverfoutstatuscodes
De foutcodes van de server geven aan dat de server een onverwachte voorwaarde heeft aangetroffen waardoor deze niet aan de aanvraag kan voldoen.