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 wordt idempotent als deze meerdere keren kan worden verwerkt zonder het resultaat te wijzigen. Zie RFC 9110: 9.2.2 voor meer informatie. Idempotent Methods.
- Een aanvraagmethode is cachebare 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 idempotente, maar niet alle idempotente methoden worden beschouwd als veilige. 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 | ️ ⚠†zelden | ❌ 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 methode
POST
kan alleen worden opgeslagen in de cache wanneer de juisteCache-Control
ofExpires
antwoordheaders aanwezig zijn. Dit is in de praktijk zeer ongebruikelijk.
HTTP-statuscodes
.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-klassevoor meer informatie. Toepassingen ontvangen HTTP-protocolfouten door een HttpRequestExceptionte vangen. HTTP-statuscodes worden gerapporteerd in HttpResponseMessage met de HttpResponseMessage.StatusCode of in HttpRequestException met de HttpRequestException.StatusCode als de aangeroepen methode geen antwoordbericht retourneert. Zie voor meer informatie over foutafhandeling HTTP-foutafhandelingen zie RFC 9110, HTTP-semantiek: Statuscodesvoor meer informatie over statuscodes.
Informatieve statuscodes
De informatieve statuscodes weerspiegelen een tussentijdse reactie. De meeste tussentijdse antwoorden, bijvoorbeeld HttpStatusCode.Continue, worden intern verwerkt met HttpClient en worden nooit aan de gebruiker blootgesteld.
HTTP-statuscode | HttpStatusCode |
---|---|
100 |
HttpStatusCode.Continue |
101 |
HttpStatusCode.SwitchingProtocols |
102 |
HttpStatusCode.Processing |
103 |
HttpStatusCode.EarlyHints |
Succesvolle 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. Deze 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 |
Client foutstatuscodes
De foutcodes van de client geven aan dat de aanvraag van de client ongeldig is.
Statuscodes voor serverfouten
De foutcodes van de server geven aan dat de server een onverwachte voorwaarde heeft aangetroffen waardoor deze niet aan de aanvraag kan voldoen.