Exigences : Utilisez ASP.NET Core 6 pour créer un nouveau projet Web API afin de fournir des services externes, l’interface peut retourner un objet vide ou une chaîne vide, si elle retourne NULL, la réponse de l’interface est : 204 No Content, bien que 204 représente le code de réponse normal (il n’y a rien de mal avec cela), mais,Certains frameworks HTTP encapsulés ne considèrent que le code d’état 200 comme normal。 Donc changez le code de statut 204 pour un code de statut 200.
Code de l’interface :
Le test est présenté ci-dessous :
L’interface renvoie un code d’état HTTP 204 Sans contenu en raison des 4 implémentations de formatage de sortie ajoutées par défaut dans ASP.NET Core :
- Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
- Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter
Le code source de HttpNoContentOutputFormatter est le suivant :
Note:Si l’interface renvoie un type void, Task renvoie un code d’état HTTP 200car elle n’entre pas dans la méthode CanWriteResult dans HttpNoContentOutputFormatter !! dans ce domaineSi la méthode CanWriteResult retourne true, elle passera par WriteAsyncMéthode.
solution
Supprimez la classe d’implémentation HttpNoContentOutputFormatter de la collection OutputFormatter avec le code suivant :
Accédez à nouveau à l’interface, testez comme suit :
Le type de retour est une chaîne ?, renvoie un code d’état 200, et n’a aucune sortie Le type de retour est object ?, renvoie un code de statut 200, et affiche null
(Fin)
|