11

現在使用しているアプリケーションにRESTAPIを実装しようとしています。REST APIを使用して、さまざまなリソースの読み取り/書き込み機能を公開したいと考えています。これの「フォーム」部分をどのように実装しますか?基本的にメソッド呼び出しとして機能し、データを返すRESTful URLを作成することで、データの「読み取り」を公開する方法を学びます。

GET /restapi/myobject?param=object-id-maybe

...そして、いくつかのデータ構造を表すXMLドキュメントが返されます。罰金。

ただし、通常、Webアプリケーションでは、「編集」には2つの要求が含まれます。1つはリソースの現在のバージョンをロードしてフォームにそのデータを入力するためのもので、もう1つは変更されたデータをポストバックするためのものです。

しかし、RESTがマッピングされているHTTPメソッドで同じことをどのように行うかはわかりません。それはPUTですよね?誰かがこれを説明できますか?

(追加の考慮事項:UIは主にAJAXで実行されます)

-更新:それは間違いなく役立ちます。しかし、私はまだサーバー側について少し混乱していますか?明らかに、私はここで単にファイルを扱っているのではありません。サーバーでは、リクエストに応答するコードは、リクエストメソッドをフィルタリングして、それをどう処理するかを決定する必要がありますか?それは読み取りと書き込みの間の「切り替え」ですか?

4

4 に答える 4

11

使用できるさまざまな選択肢があります。優れたソリューションはmicroformatswikiで提供されており、RESTfulJSONクルーからも参照されています。本当に、標準にできるだけ近づけることができます。

 Operate on a Record

GET /people/1
    return the first record 
DELETE /people/1
    destroy the first record 
POST /people/1?_method=DELETE
    alias for DELETE, to compensate for browser limitations 

GET /people/1/edit
    return a form to edit the first record 
PUT /people/1
    submit fields for updating the first record 
POST /people/1?_method=PUT
    alias for PUT, to compensate for browser limitations 
于 2008-10-06T23:22:22.613 に答える
3

データサービスをWebUIから分離する必要があると思います。データサービスを提供する場合、ブラウザがサポートできない動詞(PUTやDELETEなど)の使用を含め、RESTfulシステムが完全に適切です。

UIを説明するとき、ほとんどの人は「RESTful」と「素敵で予測可能なURL」を混同していると思います。Web UIを説明するときに、純粋にRESTfulなURL構文についてはそれほど心配する必要はありません。

于 2008-09-05T15:36:49.567 に答える
2

プレーンな HTML 経由でデータを送信する場合は、POST ベースのフォームに制限されます。POST 要求が送信される URI は、変更されるリソースの URI であってはなりません。毎回新しく作成されたリソースを追加するコレクション リソースに POST する必要があります (新しいリソースの URI がLocationヘッダーにあり、202ステータス コードが含まれます)。リクエストのコンテンツ (またはカスタム ヘッダー)。

XmlHttpRequest オブジェクトを使用している場合は、メソッドを PUT に設定し、データをリソースの URI に送信できます。サーバーがまだ存在しないリソースに対して有効な URI を提供する場合、これは空のフォームでも機能します。最初の PUT はリソースを作成します ( 202を返します)。後続の PUT は、同じデータである場合は何もしないか、既存のリソースを変更します (いずれの場合も、エラーが発生しない限り、200が返されます)。

于 2008-09-05T15:17:08.787 に答える
0

ロードは通常の GET リクエストである必要があり、新しいデータの保存は、現在データがある URL への POST である必要があります...

たとえば、http://www.example.com/record/matt-s-exampleから現在のデータをロードしてから、データを変更し、新しいデータで同じ URL に POST します。

新しいレコードを作成するときに PUT リクエストを使用することもできます (つまり、現在存在しない URL にデータを PUT する) ことができますが、実際には、POST するだけで始めるのがおそらくより良い方法です。

于 2008-09-05T15:16:05.573 に答える