Vaatimukset: Käytä ASP.NET Core 6:ta luodaksesi uuden Web API -projektin ulkoisten palveluiden tarjoamiseksi, rajapinta voi palauttaa tyhjän objektin tai tyhjän merkkijonon, jos se palauttaa NULLin, rajapinnan vastaus on: 204 Ei sisältöä, vaikka 204 edustaa normaalia vastauskoodia (siinä ei ole mitään vikaa), mutta,Jotkut kapseloidut HTTP-kehykset pitävät normaalina vain 200 statuskoodia。 Vaihda siis 204-tilakoodi 200-tilakoodiksi.
Rajapintakoodi:
Testi on esitetty alla:
Rajapinta palauttaa HTTP 204 No Content -tilakoodin, koska ASP.NET Coressa on oletuksena lisätty neljä ulostulomuotoilun toteutusta:
- Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter
HttpNoContentOutputFormatterin lähdekoodi on seuraava:
Muistiinpano:Jos rajapinta palauttaa void-tyypin, Task palauttaa HTTP 200 -tilakoodinkoska se ei mene CanWriteResult-menetelmään HttpNoContentOutputFormatterissa!! siihenJos CanWriteResult-metodi palauttaa tosi, se menee WriteAsyncin kauttaMenetelmä.
ratkaisu
Poista HttpNoContentOutputFormatter -toteutusluokka OutputFormatters-kokoelmasta seuraavalla koodilla:
Avaa rajapinta uudelleen, testaa seuraavasti:
Palautustyyppi on merkkijono?, palauttaa 200-statuskoodin, eikä sillä ole lähtöä Palautustyyppi on object?, palauttaa 200 statuskoodin ja tuottaa null
(Loppu)
|