Jenis media, juga dikenali sebagai jenis MIME, mengenal pasti format sekeping data. Dalam HTTP, jenis media menerangkan format badan mesej. Jenis media terdiri daripada dua rentetan: jenis dan subjenis. Contohnya -
Apabila pelanggan menghantar mesej permintaan, ia boleh memasukkan pengepala Terima. Pengepala Terima memberitahu pelayan jenis media yang pelanggan harapkan daripada pelayan.
Menerima: teks/html, aplikasi/xhtml+xml, aplikasi/xml p>
Jenis media menentukan cara API Web mensiri dan menyahsiri badan mesej HTTP. API Web mempunyai sokongan terbina dalam untuk data XML, JSON, BSON dan formurlencoded, dan anda boleh menyokong jenis media lain dengan menulis pemformat media.
MediaTypeFormatter ialah kelas abstrak yang diwarisi oleh kelas JsonMediaTypeFormatter dan XmlMediaTypeFormatter. JsonMediaTypeFormatter mengendalikan JSON dan XmlMediaTypeFormatter mengendalikan XML. Jenis media ditentukan dalam kaedah Daftar kelas WebApiConfig. Mari lihat beberapa contoh di mana jenis media boleh digunakan.
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; } } }
Contoh hanya mengembalikan JSON daripada perkhidmatan API Web ASP.NET tanpa mengira Terima nilai pengepala -
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 } ); } }
Dengan kod di atas, kami mengalih keluar XmlFormatter, yang memaksa API Web ASP.NET untuk sentiasa mengembalikan JSON tanpa mengira nilai Pengepala Terima dalam permintaan klien. Gunakan teknik ini apabila anda mahu perkhidmatan anda hanya menyokong JSON dan bukannya XML.
Daripada output di atas kita dapat melihat bahawa perkhidmatan API Web sentiasa mengembalikan JSON tanpa mengira aplikasi nilai pengepala Terima/xml.
Contoh hanya mengembalikan XML daripada perkhidmatan API Web ASP.NET tanpa mengira Terima nilai pengepala -
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 } ); } }
Daripada output di atas kita dapat melihat bahawa perkhidmatan API Web mengembalikan XML tanpa mengira aplikasi nilai pengepala Terima/json.
Contoh mengembalikan JSON dan bukannya XML daripada perkhidmatan API Web ASP.NET dalam situasi berikut Pelayar Membuat Permintaan -
Apabila penyemak imbas membuat permintaan kepada StudentController kami, respons akan dalam format XML. Ini kerana pelayar menghantar menerima pengepala sebagai teks/html secara lalai.
Sekarang mari lihat cara menghantar respons JSON dan bukannya XML apabila membuat permintaan daripada penyemak imbas.
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 } ); } }
Output di bawah menunjukkan bahawa apabila permintaan dicetuskan daripada penyemak imbas, respons adalah jenis JSON tanpa mengira teks/html pengepala terima.
Atas ialah kandungan terperinci Bagaimanakah kita menentukan jenis MIME dalam Asp.Net WebAPI C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!