問題タブ [hypermedia]

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 投票する
1 に答える
1861 参照

symfony - JMSSerializerBundle を使用して適切なハイパーメディア形式を作成するには?

次のような XML 応答を作成したいとします。

次のようなドメイン モデルがあるとします。

そして、次のようなマネークラス:

さて、私の質問に。次のような応答を作成するのは非常に簡単です。

アノテーション、XML または YAML のいずれかを使用して、JMSSerializerBundle に製品オブジェクトをシリアライズする方法を指示します。ただし、xmlns:atomおよび<atom:link>エントリはエンティティによって指定されるべきではありません。これは、それがどのように、どこに配置されているかという概念を持たないためです。relなど、さまざまな属性を持つリンクをさらに想像することもできますedit
頭に浮かぶ 1 つの解決策は、特定のオブジェクトのシリアル化イベントをリッスンし、これらの属性とタグを適切に追加するサービスです。サービスは DI を使用してRequestRouterサービスなどを取得し、要求された形式に適した形式でこれらのリンクを生成できます。XML 応答の IE では、適切なタイプを次のように設定できます。application/media-format+xml、一方、json-response では、次のようなものを生成できます

現在、JMSSerializerBundle のドキュメントで@PreSerialize、 、 、およびの注釈を見つけまし@PostSerializeたが、シリアル化されているオブジェクトのメソッドしか呼び出せないようです。
これが達成できるかどうか/方法を知っている人はいますか? それとも、Twig などのテンプレート エンジンを使用して手動で XML 応答を作成する必要がありますか?

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

ruby-on-rails - Grape(またはSinatra)を使用したハイパーメディア駆動型APIの実装

Rackの上に直接マウントされたGrapeを使用して、ハイパーメディア駆動型APIを実装しようとしています。Grapeは、関連するすべてのハイパーメディアを提供するための適切な場所であると思われるプレゼンター(「エンティティ」)をサポートします。

Railsルーターを利用できる場合は、その耳でルートを選択し、それをプレゼンターロジックに投げ込むことができます。例(ROARアプローチ):

ただし、Grape自体には、に類似した名前やエイリアスがないため、ルートに簡単にアクセスすることはできませんarticle_url

グレープやシナトラで同様の問題に遭遇した人はいますか?リソースリンクを公開するためのクリーンでシンプルな方法はありますか?

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

servicestack - ServiceStackカスタムフォーマットとベンダー固有のコンテンツタイプ

HAL(ハイパーテキストアプリケーション言語)のカスタム形式を追加しようとしています。カスタムフォーマットハンドラーを作成し、ServiceStack v-cardの例に従って、すべてが正常に機能しており、ServiceStackに登録できました。

問題は、カスタム形式で「hal+json」のコンテンツタイプを指定しようとしていることです。

サービスにGETリクエストを送信し、次のように形式を指定する場合:

'http:// mylocalserver:555555 / items?format = hal + json'

ServiceStackは、デフォルトでJsonのみを使用するようになっています。コンテンツタイプを「halj」のような別のものに変更してみました。ServiceStackは、カスタムフォーマッターを使用して「?format=halj」を使用するリクエストをフォーマットします。

ServiceStackのソースをプルダウンしたところ、そこに含まれるリクエストはクエリ文字列でフォーマットをチェックし、フォーマットに「json」が含まれている場合は、デフォルトでJsonフォーマッターになります。

これを回避する方法はありますか?私はこの振る舞いを無効にする方法についていくつかのドキュメントを見つけようとしてきました。

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

javascript - AngularJS の $resource とハイパーメディア

次のように定義された AngularJS $resource があります。

そしてRESTful API。したがって、GETonを実行すると、次のMenusように返されます。

質問は、メニュー 2 を削除するにはどうすればよいですか? (独自のハイパーメディア リンクがある場合: http://cafe.com/api/menus/2)

0 投票する
5 に答える
8538 参照

json - フォームとリンクを含む JSON ハイパーメディア API

私は REST API の計画の初期段階にあり、REST の HATEOAS 制約に準拠したいと考えています。しかし、JSON 形式も提供したいと思います。したがって、私の質問は、JSON でリンクとフォームを表すための規則があるかどうかです。

リンクの例を見つけましたが、これはリンクを表すかなり一般的な方法のようです。

一方、フォームを表現することは、私があまり見たことがありません。おそらく誰かが座って、これらの線に沿って何かを考え出したのではないかと考えていましたが、すべての警告を考慮しました。

これのインスピレーションは、Jon Moore が JSON はハイパーメディア API の適切な形式ではないことを示唆しているこのビデオを見ることから来ています。

http://oredev.org/2010/sessions/hypermedia-apis

ところで、本当に良い話です!

すべてのご意見をお待ちしております。

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

rest - ハイパーメディアAPIの自己リンクの重要性は何ですか?

私がRESTで読んだすべての記事と本は、ハイパーメディア応答に「自己」relリンクを追加することの重要性を繰り返していますが、それらはすべて理由と使用例に光を当てています。

なぜセルフリンクを追加する必要があり、それはどのように役立ちますか?

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

java - How to retrieve entity relationships after save?

I'm developing a RESTful webservice with spring-data as its data access layer, backed by JPA/Hibernate. It is very common to have relationships between domain entities. For example, imagine an entity Product which has a Category entity.

Now, when the client POSTs a Product representation to a JAX-RS method. That method is annotated with @Transactional to wrap every repository operation in a transaction. Of course, the client only sends the id of an already existing Category, not the whole representation, just a reference (the foreign key).

In that method, if I do this:

the variable entity now has a Category with only the id field set. This didn't surprise me. I wasn't expecting a save (SQL insert) to retrieve information on related objects. But I need the whole Product object and related entities to be able to return to the user.

Then I did this:

that is, retrieve the object after persisting it, within the same transaction/session.

To my surprise, the variable entity didn't change anything. Actually, the database didn't even get a single select query. This is related with Hibernate's cache. For some reason, when in the same transaction, a find does not retrieve the whole object graph if that object was previously persisted.

With Hibernate, the solution appears to be to use session.refresh(entity) (see this and this). Makes sense.

But how can I achieve this with spring data?

I would like to avoid to create repetitive custom repositories. I think that this functionality should be a part of spring data itslef (Some people already reported this in spring data's forum: thread1, thread2).

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

rest - RESTful Web サービス用のカスタム メディア タイプ (アプリケーション/vnd) を作成する方法は?

私は今RESTで遊んでいて、すべての概念を正しくするためにHATEOASを適切に実装していると思いました。

application/vnd[...]+xmlそのために、独自のメディア タイプ (および)を作成したいと考えていますapplication/vnd[...]+json

最初の質問:メディア タイプは、サーバーとクライアント間の契約を定義しますか?

メディア タイプによってメッセージ形式が定義されるため、新しいメディア タイプに合わせて XML スキーマと JSON スキーマを追加する必要があります (これにより、REST クライアントはメッセージに何が入ってきて、何を送り返すかを知ることができます)。

私はウェブでいくつかの調査を行いましたが、これを行う方法の詳細が欠落しています。網羅的な仕様/ドキュメントを作成するだけですか、それとも実装するための技術的な手順がいくつかありますか? (IANAに登録しなくてもいいですよね?)

完全に機能する新しいapplication/vndメディア タイプを作成するにはどうすればよいですか? また、クライアントが適切に使用できるようにするには、何に注意する必要がありますか?

0 投票する
0 に答える
300 参照

java - Jersey がネストされたリソースでの宣言型ハイパーリンクをサポートしていないというのは正しいですか?

Wonkle 型の JSON 表現には、適切な値を持つ url 属性があります。ただし、Wonkle が Widget 型のネストされた属性として使用される場合、その url 属性は null 値を持ちます。

私は何か間違ったことをしていますか、それともこれは LinkFilter が機能する方法ですか?

ありがとう!

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

rest - ハイパーメディア リンクを使用する場合、なぜカスタム メディア タイプが必要なのですか?

私は現在、純粋にリソース指向のエンタープライズ サービスを設計しています。いくつかのブログや本などを読んだ後、ハイパーメディア リンクを使用した REST が最適だと思います。

ただし、これらすべてのブログや書籍で言われていることの 1 つは、応答でハイパーメディア リンクを使用する場合、メディア タイプとして application/xml を使用しないことです。次のような一般的なステートメントを除いて、誰も理由を述べていません-リンク関係タイプのないプレーンなURIは、URIのセマンティクスをクライアントに伝えません。

私が理解したことから、独自のカスタム メディア タイプを定義し、それを読み取る方法をクライアントに認識させることが推奨されるアプローチです。しかし、私のサービスに接続するクライアントが決してブラウザーではないことがわかっている場合、それは問題になるでしょうか? application/xml タイプの応答でこれらのリンクを公開することはできませんか?

ここの誰かがこれについてもっと詳しく説明してくれることを願っていました。