Krav: Bruk ASP.NET Core 6 for å opprette et nytt Web API-prosjekt for å tilby eksterne tjenester, grensesnittet kan returnere et tomt objekt eller en tom streng, hvis det returnerer NULL, er grensesnittsvaret: 204 Ingen innhold, selv om 204 representerer den normale svarkoden (det er ingenting galt med den), men,Noen innkapslede HTTP-rammeverk vil bare anse 200-statuskoden som normal。 Så bytt statuskode 204 til statuskode 200.
Grensesnittkode:
Testen vises nedenfor:
Grensesnittet returnerer en HTTP 204 No Content-statuskode på grunn av de 4 utdataformateringsimplementasjonene som er lagt til som standard i ASP.NET Core:
- Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter
Kildekoden for HttpNoContentOutputFormatter er som følger:
Notat:Hvis grensesnittet returnerer en void-type, returnerer Task en HTTP 200-statuskodefordi den ikke går inn i CanWriteResult-metoden i HttpNoContentOutputFormatter!! DertilHvis CanWriteResult-metoden returnerer sann, vil den gå gjennom WriteAsyncMetode.
løsning
Fjern implementeringsklassen HttpNoContentOutputFormatter fra OutputFormatters-samlingen med følgende kode:
Få tilgang til grensesnittet igjen, test som følger:
Returtypen er string?, returnerer en 200-statuskode, og har ingen utdata Returtypen er objekt?, returnerer en statuskode på 200, og gir ut null
(Slutt)
|