Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 3324|Răspunde: 0

[Sursă] ASP.NET Interfața API Core(23) NULL returnează codul de stare HTTP 204

[Copiază linkul]
Postat pe 20.08.2023 15:27:55 | | | |
Cerințe: Folosește ASP.NET Core 6 pentru a crea un nou proiect Web API care să ofere servicii externe, interfața poate returna un obiect gol sau un șir gol, dacă returnează NULL, răspunsul interfeței este: 204 Fără conținut, deși 204 reprezintă codul normal de răspuns (nu este nimic în neregulă cu el), dar,Unele framework-uri HTTP încapsulate vor considera doar codul de stare 200 ca fiind normal。 Așadar, schimbă codul de stare 204 cu un cod de stare 200.

Cod de interfață:

Testul este prezentat mai jos:



Interfața returnează un cod HTTP 204 No Content din cauza celor 4 implementări de formatare a ieșirii adăugate implicit în ASP.NET Core:

  • Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter


Codul sursă pentru HttpNoContentOutputFormatter este următorul:



Notă:Dacă interfața returnează un tip void, Sarcina returnează un cod de stare HTTP 200pentru că nu intră în metoda CanWriteResult din HttpNoContentOutputFormatter!! în acest procesDacă metoda CanWriteResult returnează true, va trece prin WriteAsyncMetodă.





soluție

Eliminați clasa de implementare HttpNoContentOutputFormatter din colecția OutputFormatter cu următorul cod:

Accesează din nou interfața, testează astfel:

Tipul de retur este string?, returnează un cod de stare 200 și nu are nicio ieșire
Tipul de returnare este obiect?, returnează un cod de stare 200 și afișează anul

(Sfârșit)




Precedent:Containerul Docker se bazează pe aspnet:6.0 pentru a instala instrumentul ping
Următor:Browserul Windows Edge deschide soluția de blocare cu IE
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com