Požiadavky: Použite ASP.NET Core 6 na vytvorenie nového projektu Web API na poskytovanie externých služieb, rozhranie môže vrátiť prázdny objekt alebo prázdny reťazec, ak vráti NULL, odpoveď rozhrania je: 204 No Content, hoci 204 predstavuje bežný kód odpovede (nie je s tým nič zlé), ale,Niektoré zapuzdrené HTTP frameworky považujú za normálny iba stavový kód 200。 Takže zmeňte stavový kód 204 na 200.
Kód rozhrania:
Test je zobrazený nižšie:
Rozhranie vracia stavový kód HTTP 204 No Content kvôli 4 implementáciám formátovania výstupov, ktoré boli predvolene pridané v ASP.NET Core:
- Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter
Zdrojový kód pre HttpNoContentOutputFormatter je nasledovný:
Nota:Ak rozhranie vráti void typ, Task vráti stavový kód HTTP 200pretože sa nepoužíva v metóde CanWriteResult v HttpNoContentOutputFormatter!! do tohoAk metóda CanWriteResult vráti true, prejde cez WriteAsyncMetóda.
riešenie
Odstráňte implementačnú triedu HttpNoContentOutputFormatter z kolekcie OutputFormatters pomocou nasledujúceho kódu:
Pristupte k rozhraniu znova, otestujte nasledovne:
Typ návratu je reťazec?, vráti stavový kód 200 a nemá žiadny výstup Typ návratu je object?, vráti stavový kód 200 a výstupom je null
(Koniec)
|