問題タブ [content-negotiation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Hapi.js コンテンツ ネゴシエーション
ハピルートでコンテンツネゴシエーションを行い、クライアントが受け入れることができるタイプのデータを返すことができるようにしたいです。
エクスプレスで私はこのようなことをします
ハピでこれを行う組み込みの方法はありますか?API ドキュメントを調べましたが、何も表示されませんでした。独自のソリューションを展開するのに行き詰まっていますか?
spring - コントローラーでビューの mediaType を変更する方法 - Spring MVC
http://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvcを使用してコンテンツ ネゴシエーションを実装しました。
コントローラー ProviderController があり、そのコントローラーのすべてのビューに web.xml の .action が追加されます
ビューを HTML でレンダリングする必要がある場合は、format クエリ パラメーターを使用します (例: renderHtml.action?format=html)。format クエリ パラメータを使用せずにページを別の形式でレンダリングするにはどうすればよいですか?
PS: 私は春 3.0 を使用しています。私は生成注釈を使用できません。
ありがとう
編集 :
provider-servlet.xml の viewresolver 構成
web.xml :
コントローラー:
xml - Spring MVC でカスタム MediaType を構成するには?
Spring MVC を使用して、既に JSON と XML の両方のメディア形式で動作するコントローラーを用意しています。コンテンツ ネゴシエーション構成では、Accept ヘッダーのみに依存し、「myXml」などのカスタム名のメディア タイプを導入したいと考えています。
私の構成:
私のコントローラー:
Accept header: application/json
JSON をapplication/xml
生成し、XML を生成します。それ以外は 406 Not Acceptable を返しますmyXml
。
私はxmlを期待していましたが...
asp.net-mvc-routing - ファイル拡張子を使用した Web API 2.2 コンテンツ ネゴシエーション
私は Web API に取り組んでおり、コンテンツ ネゴシエーションとファイル拡張子を使用して、ブラウザー クライアントが受信したいコンテンツを指定できるようにしたいと考えています。例えば
この記事 ( http://msdn.microsoft.com/en-us/magazine/dn574797.aspx ) によると、このようなものでルーティングをセットアップできるはずです
// 拡張機能を使用してルートをセットアップします config.Routes.MapHttpRoute( name: "Url extension", routeTemplate: "{controller}/{action}.{ext}/{id}", defaults: new { id = RouteParameter.Optional } ) ;
ここに私の単純なコントローラーがあります
この URL を使用して
私は常にブラウザのデフォルトを取得します(クロムではxml、IE11ではjson)。
またはおそらく
エラーが発生する
カスタムフォーマッタを使用できるはずです。しかし、それは起こっていません。これが私のカスタムフォーマッタのコンストラクタです。
記事によると、これは API Content Negotiator がカスタム フォーマッタを使用するのに役立つはずです。助けていただければ幸いです。
asp.net-mvc - MVC では、ActionResult の戻り値の型を使用しない場合に JSON シリアル化を指定するにはどうすればよいですか?
ASP.NET MVC 5 では、醜い「ActionResult」戻り値の型をスキップして、代わりに「実際の」クラスを指定できます。ただし、MVC は、ASP.NET MVC WebApi2 と同様に、必要なオブジェクトの JSON シリアル化バージョンではなく.ToString()
、オブジェクトのバージョンを返したいようです。Content
このコントローラーを考えると...メソッドをまったく変更せずにJSON結果を取得するにはどうすればよいですか?
xml - ContentNegotiatingViewResolver は .json を処理できますが、.xml を処理できません
ContentNegotiatingViewResolver を使用して、.json が json 形式のデータを返し、.xml が xml 形式のデータを返すようにしています。ContentNegotiatingViewResolver 構成は次のようになります。
id.json を使用すると、正しいデータを返すことができます。ログの表示: org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor - [org.springframework.http.converter.json. MappingJackson2HttpMessageConverter@37771ee5]
しかし、id.xmlを使用すると. 406エラーを報告します。このリクエストで識別されたリソースは、リクエストの「accept」ヘッダーに従って受け入れられない特性を持つレスポンスのみを生成できます。ログの表示: org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - ハンドラーからの例外の解決 [***]: org.springframework.web.HttpMediaTypeNotAcceptableException: 受け入れ可能な表現が見つかりませんでした
私が見逃しているステップはありますか?
http - HTTP コンテンツ ネゴシエーションと Range ヘッダー
Range
ヘッダーはコンテンツ ネゴシエーションでどのように機能しますか? 説明させてください。まず最初に、次のことに同意しましょう。HTTP はステートレス プロトコルです。
HTTP サーバーが単一のリソースの複数の表現を送信できる場合、コンテンツ ネゴシエーションを使用して、どの表現を送信するかを決定します。クライアントが好み (つまり、英語と GIF) を示し、サーバーがそれに従うか、または -- 以下のシナリオでできません -- サーバーはヒューリスティックな評価を通じて、どの表現をクライアントに送信するかを選択します。
これまでのところは順調ですがRange
、ミックスに投入するとどうなりますか?
次のシナリオを想像してください。
ジョンはパリの空港にいて、ブラウザが HTTP リクエストを送信します。何らかの理由で、彼のブラウザーは、コンテンツの種類、言語、および圧縮の設定を示しません。
通過するものがほとんどないため、サーバーはいくつかのヒューリスティックを使用して、URI のフランス語表現を送信することを決定します (IP はフランスからのものとして認識されます)。
転送の途中で、ジョンはフライトに間に合うようにダウンロードを停止します。John はニューヨークに到着すると、ダウンロードを再開します。
繰り返しになりますが、クライアントの好みに関する情報がほとんどないため、サーバーは今度は URI の英語表現を送信することを決定します (IP はニューヨークからのものとして認識されます)。
この時点で、ファイルの一部はフランス語で残りの部分は英語であるため、ファイルは破損しています。
推測:
- クライアントは、最初の応答のコンテンツ タイプと言語を記憶して、2 番目の要求 ( の下) でその情報をサーバーに送り返すことができます
Accept: text/html Accept-Language: fr
。ただし、 RFC2616もRFC7233もこれに関して何も述べていないため (推奨事項でさえありません)、この動作を行う HTTP クライアントはまれであると思いますが、まだテストしていません。
ノート:
- 上記のシナリオでは、クライアントにプリファレンスを送信させ、サーバーを準拠させることができず、他のヒューリスティックにフォールバックすることが簡単にできます。問題は解決しません。
- 別の例として、この問題は別の SO の質問にも存在します: Sample http range request session
TL;DR
上記では、範囲は要求されたリソースのどの表現に適用されますか?!