問題タブ [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.

0 投票する
2 に答える
1010 参照

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/turtleapplication/n-triples

それを有効にするオプションはありますか?

0 投票する
1 に答える
599 参照

apache - Linked Data (RDF) Apache を使用したコンテンツ ネゴシエーション

必要なコンテンツ タイプに関して、リソースが要求されたときに適切なファイルを提供するという典型的なルールを誰かが提供してくれるかどうか疑問に思っていました。より具体的には、私の状況は次のとおりです。

Apache サーバーの URL にリダイレクトする purl URL があります。URL をリソースの汎用 URL のようにリソース化し、コンテンツ タイプ (RDF、TTL、または HTML) に応じて適切なドキュメントを提供したいと考えています。

したがって、.htaccess ファイル内でそれを行う方法を知りたいと思います。誰でもここで助けることができますか?

どうもありがとう

0 投票する
4 に答える
3263 参照

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ます。

0 投票する
1 に答える
1177 参照

php - _format に加えてヘッダーを使用して、Symfony 2 と FOSRestBundle を使用して、同じルートから HTML および JSON リクエストを処理するにはどうすればよいですか?

SymfonyFOSRestBundle (ver. 1.3)を使用して、 と の両方htmlの形式でコンテンツを提供しようとしていjsonます (最終的にxmlは同様に許可したいと考えています)。パラメータを使用してルートのさまざまなコンテンツを提供することに成功しました。_format

  • /foo.jsonJSON レスポンスが返されます。
  • /fooHTML 応答が返されます。

またはヘッダー_formatなど、以外のものを使用して上記の同じコンテンツ ネゴシエーションを (同じホスト上で) 調整する方法はありますか?Content-TypeAccept

Format Listenerを見てきましたが、設定方法について根本的な誤解があると思います。


定義されたルートが与えられた場合:

... 次のアクションの場合:

... および次の FOSRestBundle 構成 (スニペット):

_format上記のように、ネゴシエートされたコンテンツをデフォルト ( ) 以外の形式で必要とする場合は、要求でパラメーターを指定する必要がありますhtml

ただし、フォーマット リスナーに次のルールを指定すると、次のようになります。

ブラウザのリクエストはレスポンスを as として返しますContent-Type: application/jsonが、実際のコンテンツはtext/htmlシリアル化された JSON ではなくコンテンツです。Acceptリクエストでヘッダーを明示的に指定すると、Accept: text/html受け取った応答のコンテンツ タイプ ヘッダーはContent-Type: text/html.

どんな助けでも大歓迎です!

0 投票する
2 に答える
814 参照

json - REST での HTML アプリケーション ページと JSON データの提供

RESTful アプリケーションでは、「リソース」URL を使用して JSON データとデータにアクセスするページの両方を提供することは良い考えですか? そうでない場合、2つのことをどのように区別すればよいですか?

ページ/routesがあり、すべてのルートを一覧表示するページがあるとします。私はこれを行う必要があります:

HTML ページ

JSON レスポンス

2 つの要求が同じ URL/URI に対して行われているため、これは間違っているように見えますが、異なるリソースが返されます (1 つはアプリケーション ページで、もう 1 つはデータです)。次のようなものを提供する方が適切と思われますAccept: text/html:

(あまり役に立たないので、おそらくやらないでしょう。)

私はいくつかのオプションについて考えました:

  1. Accept上記のように HTTP ヘッダーを使用します
  2. クエリ パラメータを使用する (例: /routes?type=html)
  3. ページに別のパスを使用する (例:/routesデータ/pages/routes用とアプリケーション用)
  4. 拡張機能を使用する (例:/routesデータ用および/routes.phpアプリケーション用)

1 と 2 はあまり正しくないようです。ページはそれ自体がリソースであり、アプリケーション内のエンティティを正確に表しているわけではありませんが、私は 3 にあまり熱心ではありません。オプション 4 は単純に醜く見えます。

主要なサイトが何をしているかを調べてみましたが、それらはすべて別のホスト/サブドメイン (例: facebook.com/ graph.facebook.comtwitter.com/ api.twitter.com) からデータを提供していますが、これは私にとって選択肢ではありません。

何か案は?この質問は主に意見に基づくものであってはならないので、参考にしていただければ幸いです。

0 投票する
3 に答える
810 参照

c# - スキーマレス json を Web API でシリアライズ可能にする

複雑でネストされたオブジェクトを含む JSON 文字列があり、将来スキーマが変更される可能性があります。必要に応じてコンテンツ ネゴシエーション パイプラインでシリアル化するために、Web API に渡したいと思います。

これを行う簡単な方法はありますか?JsonConvert.DeserializeAnonymousTypeSOに関する他の回答を読みましたが、必要なスキーマを事前に知っている場合(たとえば、で逆シリアル化する)、または逆シリアル化するネストの深さを知っている場合のみについて説明します。

たとえば、次の文字列があるとします。

スキーマが何であるかはわかりません。いつでも変更できます。適切なコンテンツ ネゴシエーションを使用して Web API 経由で送信できるようにしたいだけです。

できますJObject.Parse(...)が、Web API はJObjects を適切に処理できません。辞書は適切に処理されますが、JSON.Net を使用して任意のネストの深さの辞書を逆シリアル化する方法がわかりません。