ホームページ  >  記事  >  バックエンド開発  >  Asp.Net WebAPI C# で MIME タイプを指定するにはどうすればよいですか?

Asp.Net WebAPI C# で MIME タイプを指定するにはどうすればよいですか?

WBOY
WBOY転載
2023-09-20 20:37:15604ブラウズ

メディア タイプは MIME タイプとも呼ばれ、データの形式を識別します。 HTTP では、メディア タイプはメッセージ本文の形式を記述します。メディア タイプは、タイプとサブタイプの 2 つの文字列で構成されます。例: -

  • text/html
  • image/png
  • application/json
HTTP メッセージにエンティティ本文が含まれる場合, 内容 -Type ヘッダーはメッセージ本文の形式を指定します。これにより、受信者にメッセージ本文の内容を解析する方法が指示されます。

クライアントがリクエスト メッセージを送信するとき、それに 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 メソッドで指定されます。メディア タイプを使用できる例をいくつか見てみましょう。

Student Controller

Example

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 のみをサポートする場合は、この手法を使用します。

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

#上記の出力から、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 }
      );
   }
}

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

上記の出力から、Accept ヘッダー値 application/json が何であっても、Web API サービスは XML を返すことがわかります。

次の状況で ASP.NET Web API サービスから XML の代わりに JSON を返す例 ブラウザがリクエストを行う -

ブラウザが StudentController にリクエストを行うと、応答は XML 形式になります。これは、ブラウザがデフォルトで accept ヘッダーを text/html として送信するためです。

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

次に、ブラウザからリクエストを行うときに 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 タイプを指定するにはどうすればよいですか?

以上がAsp.Net WebAPI C# で MIME タイプを指定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。