問題タブ [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.
java - ContentNegotiation : アクセプトヘッダーから最上位型以外をサーブする方法
私は、いくつかのカスタム HttpMessageConverters を備えたこの Spring Java 構成を持っています。
Jena でこの設定をクエリすると、次のエラーが表示されます。
このリクエストによって識別されたリソースは、リクエストの「accept」ヘッダーに従って受け入れられない特性を持つレスポンスのみを生成できます
Jena は、次の Accept ヘッダーを使用してリクエストを送信します。
Accept: text/turtle,application/n-triples;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7, / ;q=0.5
私の理解ではapplication/rdf+xml
、 は上記の構成によって返されるはずです。これは、最も高い値を持つタイプが構成されている限り、完全に機能します。とが利用できないapplication/rdf+xml
ため、Spring が 0.8 値の にフォールバックしないのはなぜですか?text/turtle
application/n-triples
それを有効にするオプションはありますか?
apache - Linked Data (RDF) Apache を使用したコンテンツ ネゴシエーション
必要なコンテンツ タイプに関して、リソースが要求されたときに適切なファイルを提供するという典型的なルールを誰かが提供してくれるかどうか疑問に思っていました。より具体的には、私の状況は次のとおりです。
Apache サーバーの URL にリダイレクトする purl URL があります。URL をリソースの汎用 URL のようにリソース化し、コンテンツ タイプ (RDF、TTL、または HTML) に応じて適切なドキュメントを提供したいと考えています。
したがって、.htaccess ファイル内でそれを行う方法を知りたいと思います。誰でもここで助けることができますか?
どうもありがとう
c# - ASP.NET Web API でのコンテンツ ネゴシエーション
Web サービスを ASP.NET Web Api 2 に移行していて、ほぼ最初のハードルで問題にぶつかっています。
私はこれをしたい:
また、サービスに「application/json」または「application/xml」(または実際にはメッセージ パックなどのその他の潜在的な形式) を要求し、シリアル化された応答を取得できます。しかし、JSONでしか機能しないようです。
私はこれを読んで、フレームワークが匿名型の XML へのシリアル化を (真剣に) 処理できず、解決策は XML を (真剣に) 使用しないことであると明確に述べているドキュメントを見ました。
これを呼び出して XML を応答タイプとして要求しようとすると、
XML を要求したいクライアントのサポートを削除するつもりはありませんが、これに対する回避策が本当に見つかりません。どうすればよいですか?
編集
これらを追加しました:
Dalorzoの答えによると、違いはありませんでした.
明確にするために、 の受け入れヘッダーを使用してサービスを呼び出すと、サービスはまったく問題なく動作しますが、 の受け入れヘッダーを使用してapplication/json
呼び出すと爆弾が発生しapplication/xml
ます。
php - _format に加えてヘッダーを使用して、Symfony 2 と FOSRestBundle を使用して、同じルートから HTML および JSON リクエストを処理するにはどうすればよいですか?
SymfonyとFOSRestBundle (ver. 1.3)を使用して、 と の両方html
の形式でコンテンツを提供しようとしていjson
ます (最終的にxml
は同様に許可したいと考えています)。パラメータを使用してルートのさまざまなコンテンツを提供することに成功しました。_format
/foo.json
JSON レスポンスが返されます。/foo
HTML 応答が返されます。
またはヘッダー_format
など、以外のものを使用して上記の同じコンテンツ ネゴシエーションを (同じホスト上で) 調整する方法はありますか?Content-Type
Accept
Format Listenerを見てきましたが、設定方法について根本的な誤解があると思います。
定義されたルートが与えられた場合:
... 次のアクションの場合:
... および次の FOSRestBundle 構成 (スニペット):
_format
上記のように、ネゴシエートされたコンテンツをデフォルト ( ) 以外の形式で必要とする場合は、要求でパラメーターを指定する必要がありますhtml
。
ただし、フォーマット リスナーに次のルールを指定すると、次のようになります。
ブラウザのリクエストはレスポンスを as として返しますContent-Type: application/json
が、実際のコンテンツはtext/html
シリアル化された JSON ではなくコンテンツです。Accept
リクエストでヘッダーを明示的に指定すると、Accept: text/html
受け取った応答のコンテンツ タイプ ヘッダーはContent-Type: text/html
.
どんな助けでも大歓迎です!
json - REST での HTML アプリケーション ページと JSON データの提供
RESTful アプリケーションでは、「リソース」URL を使用して JSON データとデータにアクセスするページの両方を提供することは良い考えですか? そうでない場合、2つのことをどのように区別すればよいですか?
ページ/routes
があり、すべてのルートを一覧表示するページがあるとします。私はこれを行う必要があります:
HTML ページ
JSON レスポンス
2 つの要求が同じ URL/URI に対して行われているため、これは間違っているように見えますが、異なるリソースが返されます (1 つはアプリケーション ページで、もう 1 つはデータです)。次のようなものを提供する方が適切と思われますAccept: text/html
:
(あまり役に立たないので、おそらくやらないでしょう。)
私はいくつかのオプションについて考えました:
Accept
上記のように HTTP ヘッダーを使用します- クエリ パラメータを使用する (例:
/routes?type=html
) - ページに別のパスを使用する (例:
/routes
データ/pages/routes
用とアプリケーション用) - 拡張機能を使用する (例:
/routes
データ用および/routes.php
アプリケーション用)
1 と 2 はあまり正しくないようです。ページはそれ自体がリソースであり、アプリケーション内のエンティティを正確に表しているわけではありませんが、私は 3 にあまり熱心ではありません。オプション 4 は単純に醜く見えます。
主要なサイトが何をしているかを調べてみましたが、それらはすべて別のホスト/サブドメイン (例: facebook.com
/ graph.facebook.com
、twitter.com
/ api.twitter.com
) からデータを提供していますが、これは私にとって選択肢ではありません。
何か案は?この質問は主に意見に基づくものであってはならないので、参考にしていただければ幸いです。
c# - スキーマレス json を Web API でシリアライズ可能にする
複雑でネストされたオブジェクトを含む JSON 文字列があり、将来スキーマが変更される可能性があります。必要に応じてコンテンツ ネゴシエーション パイプラインでシリアル化するために、Web API に渡したいと思います。
これを行う簡単な方法はありますか?JsonConvert.DeserializeAnonymousType
SOに関する他の回答を読みましたが、必要なスキーマを事前に知っている場合(たとえば、で逆シリアル化する)、または逆シリアル化するネストの深さを知っている場合のみについて説明します。
たとえば、次の文字列があるとします。
スキーマが何であるかはわかりません。いつでも変更できます。適切なコンテンツ ネゴシエーションを使用して Web API 経由で送信できるようにしたいだけです。
できますJObject.Parse(...)
が、Web API はJObject
s を適切に処理できません。辞書は適切に処理されますが、JSON.Net を使用して任意のネストの深さの辞書を逆シリアル化する方法がわかりません。