Ricerca…


MediaTypeFormatter Informazioni di base

MediaTypeFormatter è una classe astratta da cui ereditano le classi JsonMediaTypeFormatter e XmlMediaTypeFormatter . Qui, la classe JsonMediaTypeFormatter gestisce gli oggetti JSON e la classe XmlMediaTypeFormatter gestisce gli oggetti XML.

Restituisce solo JSON indipendentemente dal valore Accept Header:

Per restituire solo oggetti JSON nella risposta della richiesta weather Accept Valore intestazione della richiesta se application/json o application/xml scrivono la seguente riga nel metodo Register della classe WebApiConfig .

config.Formatters.Remove(config.Formatters.XmlFormatter);

Qui, config è un oggetto della classe HttpConfiguration . Questa riga di codice rimuove completamente XmlFormatter che forza l'API Web ASP.NET a restituire sempre JSON indipendentemente dal valore di intestazione Accept nella richiesta del client. Utilizzare questa tecnica quando si desidera che il servizio supporti solo JSON e non XML.

Restituisce solo XML indipendentemente dal valore Accept Header:

Per restituire solo oggetti XML nella risposta della richiesta meteo Accetta il valore Intestazione della richiesta se application/json o application/xml scrivono la seguente riga nel metodo Register della classe WebApiConfig .

config.Formatters.Remove(config.Formatters.JsonFormatter);

Qui, config è un oggetto della classe HttpConfiguration come descritto sopra. Questa riga di codice rimuove completamente JsonFormatter che forza l'API Web ASP.NET a restituire sempre XML indipendentemente dal valore di intestazione Accept nella richiesta del client. Utilizzare questa tecnica quando si desidera che il proprio servizio supporti solo XML e non JSON.

Restituisci JSON anziché XML:

  1. Quando viene emessa una richiesta dal browser, il servizio API Web deve restituire JSON anziché XML.
  2. Quando una richiesta viene emessa da uno strumento come il violinista, il valore di intestazione Accept deve essere rispettato. Ciò significa che se l'intestazione Accept è impostata su application / xml il servizio deve restituire XML e se è impostato su application / json il servizio dovrebbe restituire JSON.

Metodo 1:

Includere la seguente riga nel metodo Register della classe WebApiConfig .

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

In questo modo l'API Web ASP.NET viene utilizzata per utilizzare JsonFormatter quando viene richiesta la richiesta di text/html che è l'impostazione predefinita per la maggior parte dei browser. Il problema con questo approccio è che l'intestazione Content-Type della risposta è impostata su text/html che è fuorviante.

Metodo 2:

Usa i formattatori personalizzati. Creare una classe derivata dalla classe JsonMediaTypeFormatter e implementare il metodo SetDefaultContentHeaders .

Ecco l'esempio della classe di formattazione JSON personalizzata che restituisce il formato JSON in risposta.

public class CustomJsonFormatter : JsonMediaTypeFormatter
{
    public CustomJsonFormatter()
    {
        this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
    }

    public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType)
    {
        base.SetDefaultContentHeaders(type, headers, mediaType);
        headers.ContentType = new MediaTypeHeaderValue("application/json");
    }
}

E questo è l'esempio del formattatore del tipo di supporto personalizzato che restituisce il formato CSV in risposta.

public class CSVMediaTypeFormatter : MediaTypeFormatter {

    public CSVMediaTypeFormatter()
    {
        SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/csv"));
    }
    
    public CSVMediaTypeFormatter(MediaTypeMapping mediaTypeMapping) : this()
    {
        MediaTypeMappings.Add(mediaTypeMapping);
    }
    
    public CSVMediaTypeFormatter(IEnumerable<MediaTypeMapping> mediaTypeMappings) : this()
    {
        foreach (var mediaTypeMapping in mediaTypeMappings)
        {
            MediaTypeMappings.Add(mediaTypeMapping);
        }
    }
}

Successivamente, implementando la classe di formattazione personalizzata, registrarlo nel metodo Register della classe WebApiConfig .

config.Formatters.Add(new CustomJsonFormatter());

Ora, secondo il tuo formattatore, riceverai risposta e Content-Type dal server.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow