0

RESTful にしたい Web サービスに取り組んでいます。CRUD のやり方については知っていますが、完全に理解できないことがいくつかあります。したがって、これは事実です:

ブラウザー (クライアント) でデータを収集し、追跡サーバーに送信する追跡サービスがあります。プロファイルが存在する場合と存在しない場合の 2 つのケースがあります。最後に、サービスは DOM に挿入する必要があるいくつかの要素を返します。

したがって、基本的には2つのWebサービスが必要です:

  1. http://mydomain.tld/profiles/
  2. http://mydomain.tld/elements/

質問 1: 現在、GET のみを使用していますが、CRUD をサポートするようにサーバーを書き直しています。その場合、プロファイルが存在しない場合は POST を使用する必要があります。http://mydomain.tld/profiles/のようなものと POST ペイロードには、保存する情報があります。プロファイルが存在する場合は、PUT とhttp://mydomain.tld/profiles/を使用します。PUTのペイロードには保存するデータがあります。すべて問題ありませんが、問題は、私が理解している限り、xmlhttp が PUT をサポートしていないことです。更新ですが、POST を使用しても問題ありませんか?

質問 2: 前述のように、トラックが作成されると、私のサービスは DOM に挿入されるいくつかの要素を返します。論理的には、RESTful に保つには、POST/PUT を使用してプロファイルを更新し、次に GET を使用して挿入する要素を取得する必要があると思います。ただし、サーバー側の帯域幅とリソースを節約するには、別のリソースであっても、POST/PUT を使用して要素をプロファイルに返す方が理にかなっています。これについてどう思いますか?

BR/スネ

編集:

質問 3: 場合によっては、プロファイルを更新するだけで要素を受け取りたくない場合があります。同じリソースを引き続き使用し、ペイロード パラメータを使用して要素が必要かどうかを指定できますか。たとえば、「dont_receive_elements:true」

4

2 に答える 2

0

@Richard - リンクとフィードバックに感謝します。私がたどり着いた解決策は、コメントで提案されているように、各リソースへの個別の呼び出しを使用して、API をシンプルでクリーンにすることです。

次に、帯域幅を節約してパフォーマンスを維持できるようにするために、内部でプロキシのように機能し、単一の GET で呼び出され、プロファイルを更新して要素を返す「非公式」関数を API に作成しました。これは、私が知っているように、あまり落ち着きがありませんが、私の状況を処理し、公式の API の一部ではありません。このためにGETをサポートするために必要な理由は、javascriptとクロスドメインから呼び出す必要があるためです。

JSONPを使用してクロスドメインを解決できたと思いますが、それでもAPIを「汚れた」ものにする必要があります:)

于 2012-07-14T19:02:44.083 に答える
0

質問 1 について、xmlhttp が「put」をサポートしていないことは確かですか? http://www.mnot.net/javascript/xmlhttprequest/を 3 つのブラウザー (Chrome、Firefox、IE) で実行したところ、出力によると、すべてのブラウザーで "put" が成功しました。http://www.slideshare.net/apigee/rest-design-webinarの情報に従って(また、Restful API に関する多くの Apigee ビデオとスライドショーをチェックすることを強くお勧めします)、言及したユースケースには「put」をお勧めします.

ただし、データについて少し考え方を変えることで、この問題を完全に回避できる場合があります。プロファイルがあり、プロファイルごとに 0 セット以上のペイロード情報があると考えることができますか? このモデルでは、次の 2 つのケースがあります。 1. プロファイルが存在しない場合は、.../profiles/ に POST を含むプロファイルを作成します。次に、要素/追跡データをポスト付きで .../profile/123/tracks/ に追加します (または ... /profile/123/elements/) 2. プロファイルが存在し、要素/追跡データを追加するだけです

(モデルを詳細に理解していないと申し訳ありませんが、非常に正確にするのは困難です)。

質問 2 については、プロファイルに 0 個以上の要素があるデータ モデルを使用する場合、プロファイルを更新し (必要な要素を追加)、更新されたプロファイル (および要素の完全なグラフ) を返すことで、追加の要素を節約できます。取得。

より一般的には、質問 2 についてです。API の開発者として、REST の世界ではかなりの自由があります。API の消費者にとって簡単でわかりやすいものにすることに重点を置いているのであれば、おそらく問題ありません。

結論: www.apigee.com をチェックしてください。彼らは私よりもはるかに多くのことを知っています。

于 2012-07-13T05:44:06.027 に答える