3

クライアント - サーバー Web サービスを開発しています。フロント エンドは でビルドされhtml/javascript/jquery/jqmバック エンドは でビルドされますphp/mysql

クライアントが起動するstatic idと、 (変更されない) とdynamic-token(変更される場合とされない場合があることを意味します) があります。このため、クライアントが起動するたびに、クライアントをサーバーに登録し、サーバーにPOSTリクエストを送信します。本文には、id and token. post リクエストは、次のような php スクリプトに対して行われmyserver.com/register.phpますid and token: id存在しない場合はcreates、新しいレコードです。存在する場合は、token変更されているかどうかをチェックしupdatesます。

クライアントから、ユーザーは多数のイベント (10 としましょう) をサブスクライブできます。イベントは、チェックボックス付きのリストに表示されます。ユーザーは、購読したいイベントをチェックし、購読ボタンを押します。サブスクライブボタンがヒットするPOSTと、本体にユーザーのjsonファイルとidブール値を持つイベントのすべての名前(サブスクライブまたはサブスクライブしない)を持つphpスクリプトにリクエストが行われます。

id: xxxxxx
event1: 1
event2: 0
event3: 0
event4: 1
...

PHP スクリプトは次のようになりますmyServer/subscribe.php。リクエストが到着すると、php ファイルは受信した JSON を読み取ります。彼はidデータベースで を検索し、送信されたイベントの名前とブール値をチェックします。1 の場合、彼はユーザーをサブスクライブします。が 0 の場合、ユーザーの登録を解除します。ユーザーが既にサブスクライブしていて、再度サブスクライブした場合、何も起こりません。退会も同様。

最後に、ユーザーがサブスクリプション ページに入るPOSTと、サーバーに対して要求が行われ、本文にユーザーの を持つ JSON ファイルが含まれidます。リクエストは、.php のような php ファイルに対して行われますmyServer/whereSubsribed.php。この php ファイルは、 を取得し、idこれが登録されているイベントのデータベースを調べますid。終了すると、ユーザーが既にサブスクライブしているすべてのイベントを含むファイルでクライアントに応答 (エコーを作成) するjsonため、チェックボックスが読み込まれると、ユーザーが既にサブスクライブしているイベントがチェックされているように見えます。

上記のサービスはRestですか?何が休息で何が休息でないかを理解するのに本当に苦労しています。私が理解していること:

POST PUT DELELE GET を使用する必要があることはわかっていますが、見たように POST だけですべてを実行できます。では、なぜそれらを使用するのですか?Rest は動詞ではなく名詞に関するものであり、アクションではなくリソースに関するものであることを私は知っています。これが実際に何を意味するのか私にはわかりません。

誰か、私が説明するこの特定のケースで、Rest Web サービスがどのように見えるかを説明してもらえますか? subscribe/unsubscribe/register のようなアクションがないのはどうしてですか?

例を挙げて、Restとは何かを最終的に理解できることを願っています。この時点で、SOAP とは何かもわからないと言うべきかもしれません。サービスの開発を始めたとき、これが正しい方法だと思ったので、このようにしました。それから、Rest/Soap について学びました。では、Rest は私のサービスを実行できる別の方法です。もしそうなら、少し時間をかけてその方法を説明してください。

長い文章を読んでいただき、誠にありがとうございました。

**親切にも答えていただける場合は、この件に関する定義や理論的なアプローチを教えてください。読むべきものはほとんど読んだ。私は新しい html/php スクリプターでもあるので、説明したのとまったく同じサービスの例を教えていただければ幸いです。それが安らかだったらどうなるかを理解するのは素晴らしいことだと思います。

編集


私の見方では、HTTPリクエスト(POST)を使用して、特定のアクション/ phpスクリプト(subscribe、register、whereSubscribe)にデータ(id、tokenなど)をプッシュしました。

残りは正反対であるべきですか?アクションを HTTP 経由でリソース (ユーザー イベント) に送信します (post put delete update)。

それは、すべてのプログラミングも変更されるということですか? 私が書いたスクリプトを持たないことがどうして可能なのか理解できません。PHPスクリプトを持っていない場合、どのようにプログラムでサブスクリプションを作成できますか?!

4

2 に答える 2

1

前の回答へのコメントで、あなたはまさに正しいです:

Rest は、名詞や動詞のように見えるきれいな URL 名に関するものではないと確信しています。

RESTfull とは、HTTP の可能性を最大限に活用することを意味し、以下の投稿の素晴らしい例で言及および説明されています。

例えば。Web サービスによって管理されるユーザー データベースがあるとします。安らかなアプローチを使用すると、おそらく次のようになります。

/user_create
/user?id=xxx
/user_edit?id=xxx
/user_delete?id=xxx

/user 
/user/xxx

新しいユーザーを作成する場合は、作成するデータを含む POST 要求をその URL に送信するだけです。ユーザーを取得する場合は、GET 要求を /user/xxx に送信します。ユーザーを更新したい場合は、PUT リクエストを使用して更新したいフィールドを /user/xxx に送信するだけです。削除したい場合は、代わりに DELETE リクエストを送信します。

さらに具体的な例です。RESTful アプリケーションでは、GET 要求を使用してデータを変更することはありません。これが、PUT、POST、および DELETE の目的です。ただし、ほとんどの Web アプリケーションは常にこれを行っているため、RESTful ではありません。

から取得: RESTful プログラミングとは正確には何ですか?

悲しいことに、RESTfull は以下のすべての操作を正しく使用することを意味します: http://en.wikipedia.org/wiki/Http_protocol#Request_methods

ここに画像の説明を入力

これは、REST Api に関する多くの質問に答える素晴らしい投稿でもあります。

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

于 2013-06-20T16:49:18.117 に答える
1

あなたが説明したように、REST ではありません。REST では、URL はリソースを指すアドレスのようなものです。実際には、URL は名詞であり、HTTP メソッドは動詞です。

説明されているシステムには、動詞であるスクリプトがあります。たとえば、 はsubscribe.php何かをするというアクションを実行します。

RESTful に考えると、リソースにはトークンやサブスクリプションなどが含まれます。REST を実行する場合は、各サブスクリプションに明確で明確な URL が必要です。

たとえば、サブスクリプションの URL は、問題のサブスクリプションの特定の ID に置き換えられる/path/to/subscriptions/<subscription_id>場合があります。<subscription_id>クライアントが何かを購読したいときは、その URL に何かを PUT します。

クライアントがサブスクリプションを作成したいが、正確な最終的な場所を知らなかった場合、クライアントは一般的なものに POST し/path/to/subscriptions、HTTP 応答には正しい場所への道を指す Location ヘッダーが含まれます/path/to/subscriptions/<subscription_id>

PHP はすぐに RESTful プログラミングに役立つわけではありません。PHP スクリプトは特定のパスに存在し、操作 (動詞) を実行します。リソースの名詞性を反映したきれいな URL を用意するためには、あらゆる手段を講じる必要があります。

お役に立てれば!

于 2013-06-20T16:17:56.993 に答える