ホームページ >バックエンド開発 >C#.Net チュートリアル >Asp.Net WebAPI C# で MIME タイプを指定するにはどうすればよいですか?
メディア タイプは MIME タイプとも呼ばれ、データの形式を識別します。 HTTP では、メディア タイプはメッセージ本文の形式を記述します。メディア タイプは、タイプとサブタイプの 2 つの文字列で構成されます。例: -
クライアントがリクエスト メッセージを送信するとき、それに Accept ヘッダーを含めることができます。 Accept ヘッダーは、クライアントがサーバーからどのメディア タイプを期待しているかをサーバーに伝えます。
受け入れられる: text/html、application/xhtml xml、application/xml p>
メディア タイプは、Web API が HTTP メッセージ本文をシリアル化および逆シリアル化する方法を決定します。 Web API には、XML、JSON、BSON、およびフォーマーレンコード化されたデータのサポートが組み込まれており、メディア フォーマッタを作成することで他のメディア タイプをサポートできます。
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 } ); } }
上記のコードでは、クライアント要求の Accept ヘッダー値に関係なく、ASP.NET Web API が常に JSON を返すようにする XmlFormatter を削除しました。サービスで XML ではなく JSON のみをサポートする場合は、この手法を使用します。
#上記の出力から、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 サービスから XML の代わりに JSON を返す例 ブラウザがリクエストを行う -
ブラウザが StudentController にリクエストを行うと、応答は XML 形式になります。これは、ブラウザがデフォルトで accept ヘッダーを text/html として送信するためです。
次に、ブラウザからリクエストを行うときに XML ではなく JSON レスポンスを送信する方法を見てみましょう。
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 であることを示しています。
以上がAsp.Net WebAPI C# で MIME タイプを指定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。