媒體類型,也稱為 MIME 類型,標識一段數據的格式。在 HTTP 中,媒體類型描述了消息正文的格式。媒體類型由兩個字符串組成:類型和子類型。例如 –
- text/htmlimage/pngapplication/json當 HTTP 消息包含實體主體時,Content-Type 標頭指定消息主體的格式。這告訴接收者如何解析消息體的內容。
當客戶端發送請求消息時,可以包含 Accept 標頭。 Accept 標頭告訴服務器客戶端希望從服務器獲得哪種媒體類型。
接受:text/html,application/xhtml+xml,application/xml p>
媒體類型決定 Web API 如何序列化和反序列化 HTTP 消息正文。 Web API 內置了對 XML、JSON、BSON 和 formurlencoded 數據的支持,您可以通過編寫媒體格式化程序來支持其他媒體類型。
MediaTypeFormatter 是一個抽象類,JsonMediaTypeFormatter 和 XmlMediaTypeFormatter 類繼承自該抽象類從。 JsonMediaTypeFormatter 處理 JSON,XmlMediaTypeFormatter 處理 XML。媒體類型在 WebApiConfig 類的 Register 方法中指定。讓我們看一些可以使用媒體類型的示例。
學生控制器
示例
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; } } }
登錄后復制
僅從 ASP.NET Web API 服務返回 JSON 的示例,無論
Accept 標頭值 –
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 } ); } }
登錄后復制
使用上面的代碼,我們刪除了 XmlFormatter,它強制 ASP.NET Web API 始終返回 JSON,無論客戶端請求中的 Accept 標頭值如何。當您希望服務僅支持 JSON 而不是 XML 時,請使用此技術。
從上面的輸出中我們可以看到,無論 Accept 標頭值 application/xml 是什么,Web API 服務始終會返回 JSON。
從 ASP.NET Web API 服務僅返回 XML 的示例,無論
Accept 標頭值 –
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 } ); } }
登錄后復制
從上面的輸出中我們可以看到,無論 Accept 標頭值 application/json 是什么,Web API 服務都返回 XML。
在以下情況下從 ASP.NET Web API 服務返回 JSON 而不是 XML 的示例
瀏覽器發出請求 –
當瀏覽器向我們的 StudentController 發出請求時,響應將采用 XML 格式。這是因為瀏覽器默認以 text/html 形式發送接受標頭。
現在讓我們看看當從瀏覽器發出請求時如何發送 JSON 響應而不是 XML。
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 } ); } }
登錄后復制
下面的輸出顯示,當從瀏覽器觸發請求時,無論接受標頭文本/html如何,響應都是 JSON 類型。
“>
以上就是我們如何在 Asp.Net WebAPI C# 中指定 MIME 類型?的詳細內容,更多請關注www.xfxf.net其它相關文章!