如何在 Asp.Net WebAPI C# 中指定 MIME 型別?
媒體型別,也稱為 MIME 型別,用於識別資料片段的格式。在 HTTP 中,媒體型別描述訊息體的格式。媒體型別由兩個字串組成,一個型別和一個子型別。例如 -
- text/html
- image/png
- application/json
當 HTTP 訊息包含實體主體時,Content-Type 標頭指定訊息體的格式。這告訴接收方如何解析訊息主體的內容。
當客戶端傳送請求訊息時,它可以包含 Accept 標頭。Accept 標頭告訴伺服器客戶端希望從伺服器獲取哪種媒體型別。
Accept: text/html,application/xhtml+xml,application/xml
媒體型別決定了 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;
}
}
}示例:無論 Accept 標頭值如何,都只從 ASP.NET Web API 服務返回 JSON -
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。
示例:無論 Accept 標頭值如何,都只從 ASP.NET Web API 服務返回 XML -
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 作為 Accept 標頭。

現在讓我們看看如何在瀏覽器發出請求時傳送 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 }
);
}
}以下輸出顯示,當從瀏覽器發出請求時,無論 Accept 標頭 text/html 如何,響應型別都是 JSON。

資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP