Comment spécifions-nous le type MIME dans Asp.Net WebAPI C# ?

WBOY
Libérer: 2023-09-20 20:37:15
avant
667 Les gens l'ont consulté

Le type de média, également appelé type MIME, identifie le format d'une donnée. En HTTP, les types de médias décrivent le format du corps du message. Un type de média se compose de deux chaînes : type et sous-type. Par exemple -

  • text/html
  • image/png
  • application/json
Lorsqu'un message HTTP contient un corps d'entité, l'en-tête Content-Type spécifie le format du corps du message. Cela indique au destinataire comment analyser le contenu du corps du message.

Lorsque le client envoie un message de demande, il peut inclure l'en-tête Accepter. L'en-tête Accept indique au serveur le type de média que le client attend du serveur.

Accepte : text/html, application/xhtml+xml, application/xml p>

Le type de média détermine la manière dont l'API Web sérialise et désérialise le corps du message HTTP. L'API Web prend en charge les données XML, JSON, BSON et codées par formulaire, et vous pouvez prendre en charge d'autres types de médias en écrivant des formateurs de médias.

MediaTypeFormatter est une classe abstraite dont héritent les classes JsonMediaTypeFormatter et XmlMediaTypeFormatter. JsonMediaTypeFormatter gère JSON et XmlMediaTypeFormatter gère XML. Le type de média est spécifié dans la méthode Register de la classe WebApiConfig. Examinons quelques exemples où les types de médias peuvent être utilisés.

Contrôleur étudiant

Exemple

using DemoWebApplication.Models;
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class StudentController : ApiController{
      List <Student> students = new List <Student>{
         new Student{
            Id = 1,
            Name = "Mark"
         },
         new Student{
            Id = 2,
            Name = "John"
         }
      };
      public IEnumerable <Student> Get(){
         return students;
      }
   }
}
Copier après la connexion

Exemple de renvoi JSON uniquement à partir du service API Web ASP.NET, indépendamment Accepter la valeur de l'en-tête -

public static class WebApiConfig{
   public static void Register(HttpConfiguration config){
      config.MapHttpAttributeRoutes();
      config.Formatters.Remove(config.Formatters.XmlFormatter);
      config.Routes.MapHttpRoute(
         name: "DefaultApi",
         routeTemplate: "api/{controller}/{id}",
         defaults: new { id = RouteParameter.Optional }
      );
   }
}
Copier après la connexion

Avec le code ci-dessus, nous avons supprimé XmlFormatter, ce qui oblige l'API Web ASP.NET à toujours renvoyer JSON quelle que soit la valeur de l'en-tête Accept dans la demande du client. Utilisez cette technique lorsque vous souhaitez que votre service prenne en charge uniquement JSON au lieu de XML.

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

À partir du résultat ci-dessus, nous pouvons voir que le service API Web renvoie toujours JSON quelle que soit la valeur d'en-tête Accept application/xml.

Exemple de renvoi uniquement du XML à partir du service API Web ASP.NET, quel que soit le Accepter la valeur d'en-tête -

public static class WebApiConfig{
   public static void Register(HttpConfiguration config){
      config.MapHttpAttributeRoutes();
      config.Formatters.Remove(config.Formatters.JsonFormatter);
      config.Routes.MapHttpRoute(
         name: "DefaultApi",
         routeTemplate: "api/{controller}/{id}",
         defaults: new { id = RouteParameter.Optional }
      );
   }
}
Copier après la connexion

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

À partir du résultat ci-dessus, nous pouvons voir que le service API Web renvoie XML quelle que soit la valeur d'en-tête Accepter application/json.

Exemple de renvoi de JSON au lieu de XML à partir du service API Web ASP.NET dans les situations suivantes Le navigateur fait une demande -

Lorsque le navigateur fait une demande à notre StudentController, la réponse sera au format XML. En effet, les navigateurs envoient par défaut les en-têtes d'acceptation au format texte/html.

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

Voyons maintenant comment envoyer une réponse JSON au lieu de XML lors d'une requête depuis le navigateur.

public static class WebApiConfig{
   public static void Register(HttpConfiguration config){
      config.MapHttpAttributeRoutes();
      config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new
      MediaTypeHeaderValue("text/html"));
      config.Routes.MapHttpRoute(
         name: "DefaultApi",
         routeTemplate: "api/{controller}/{id}",
         defaults: new { id = RouteParameter.Optional }
      );
   }
}
Copier après la connexion

Le résultat ci-dessous montre que lorsque la requête est déclenchée depuis le navigateur, la réponse est de type JSON quel que soit le texte/html d'en-tête d'acceptation.

Comment spécifions-nous le type MIME dans Asp.Net WebAPI C# ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal