ホームページ  >  記事  >  バックエンド開発  >  Asp.Net WebAPI C# のコンテンツ ネゴシエーションとは何ですか?

Asp.Net WebAPI C# のコンテンツ ネゴシエーションとは何ですか?

王林
王林転載
2023-09-11 17:13:01584ブラウズ

コンテンツ ネゴシエーションは、特定のコンテンツに最適な表現を選択するプロセスです 複数の表現が利用可能な場合の応答。意味、~に依存する リクエストのヘッダー値が受け入れられ、サーバーは応答を送信します。初め HTTP でのコンテンツ ネゴシエーションのメカニズムは、これらの要求ヘッダー (

Accept) です。応答に受け入れられるメディア タイプ (「application/json」、「application/xml」、またはカスタム メディア タイプ (例: "application/vnd.example xml")

Accept-Charset - どの文字セットが受け入れられるか (例: UTF-8 または ISO 8859-1) .

Accept-Encoding - どのコンテンツ エンコーディングが受け入れられるか (gzip など)。

Accept-Language - 「en-us」などの自然なエンコード言語を優先します。

サーバーは、HTTP リクエストの他の部分を調べることもできます。たとえば、次の場合 リクエストには、AJAX リクエストを示す X-Requested-With ヘッダーとサーバーが含まれています。 Accept ヘッダーがない場合は、デフォルトで JSON が使用される可能性があります。

コンテンツ ネゴシエーションでは、パイプラインは次から始まります。 HttpConfiguration オブジェクト。また、メディア フォーマッタのリストも取得します。 HttpConfiguration.Formatters コレクション。

次に、パイプラインは IContentNegotiator.Negotiate を呼び出し、-

  • シリアル化するオブジェクト タイプ
  • メディア フォーマッタのコレクション
  • HTTP リクエスト
#Negotiate メソッドは 2 つの情報を返します -

    #どのフォーマッタを使用するか #応答のメディア タイプ
フォーマッタが見つからない場合、Negotiate メソッドは null を返し、クライアントは HTTP エラー 406 (受け入れられません)。

次の StudentController について考えてみましょう。

using DemoWebApplication.Models;
using System;
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"
         }
      };
   }
}

RESTful サービスの標準の 1 つは、クライアントが次のことができる必要があるということです。 XML、JSON など、どの形式の応答が必要かを決定します。 Accept ヘッダーを含むサーバーに送信されます。 Accept ヘッダーを使用すると、クライアントは次のことができます。 応答の形式を指定します。たとえば、

Accept: application/xml returns XML
Accept: application/json returns JSON

以下の出力は、Accept ヘッダーを XML として渡すと、応答が XML であることを示しています。 アプリケーション/XML。

什么是 Asp.Net webAPI C# 中的内容协商?

以下の出力は、Accept ヘッダーを JSON として渡すと、応答が JSON であることを示しています。 アプリケーション/JSON。

什么是 Asp.Net webAPI C# 中的内容协商?

応答が要求された形式でクライアントに送信されるときは、次の点に注意してください。 応答の Content-Type ヘッダーは適切な値に設定されます。たとえば、次の場合 クライアントは application/xml をリクエストし、サーバーはデータを XML 形式で送信します。 また、Content-Type=application/xml を設定します。

什么是 Asp.Net webAPI C# 中的内容协商?#性能指数を指定することもできます。以下の例では、xml の方が高品質です。 ファクターは json よりも重要であるため、サーバーは XML フォーマッタを使用してデータを XML にフォーマットします。 application/xml;q=0.8,application/json;q=0.5

以上がAsp.Net WebAPI C# のコンテンツ ネゴシエーションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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