[解決済み] RESTfulサービスにおける非CRUD操作
質問
RESTful サービスに CRUD 以外の操作を追加する方法として、quot;RESTful" とはどのようなものでしょうか。 このようなレコードへの CRUD アクセスを可能にするサービスがあるとします。
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
車の色を変えたい場合は、単純に
POST /api/car/123
で、新しい色のPOST変数を含めます。
しかし、私が車を購入したいとします。その操作は、単に "ユーザー" レコードの "所有車" プロパティを更新するよりも複雑だとします。 次のようなことを単純に行うのはRESTfulでしょうか?
POST /api/car/123/purchase
ここで、"purchase" は本質的にメソッド名です。 または、次のようなカスタム HTTP 動詞を使用する必要がありますか。
PURCHASE
の代わりに
POST
?
それとも、CRUD以外の操作は完全にRESTの範囲外なのでしょうか?
どのように解決するのですか?
次のことを考えましょう。 購入 を事業体として、あるいは リソース をRESTful辞書に登録します。つまり、購入を行うことは、実際には新しいリソースを作成することです。だから
POST /api/purchase
は新規注文を行います。このアドレスに送信されるコンテンツの中で、詳細(ユーザー、車など)はid(またはURI)で参照される必要があります。
車の注文がデータベースへの単純なINSERTでないことは問題ではありません。実際、REST は、データベースのテーブルを CRUD 操作として公開することではありません。論理的な観点からは、あなたは注文 (購入) を作成していますが、サーバー側は好きなだけ多くの処理ステップを自由に行うことができます。
HTTPプロトコルをさらに悪用することもできます。使用方法
Location
ヘッダを使用して、新しく作成された注文へのリンクを返したり、問題 (サーバ側またはクライアント側) についてユーザに知らせるために HTTP 応答コードを慎重に選択したり、などです。
関連
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み] REST APIのエラーリターンに関するグッドプラクティス【終了しました
-
[解決済み] RESTとRESTfulの違いは何ですか?
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み】RESTful 認証
-
[解決済み】動詞のないREST URLを作成する方法は?
-
[解決済み】RESTウェブサービスを使用して、メタデータを含むファイルをアップロードするにはどうすればよいですか?
-
[解決済み】P99のレイテンシーって何ですか?
-
[解決済み】REST API 404。不正な URI、またはリソースの欠落?
-
[解決済み] わかりやすく言うと「Webサービス」って何?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Spring RestTemplateクライアント - 接続拒否例外
-
[解決済み】RESTウェブサービスを使用して、メタデータを含むファイルをアップロードするにはどうすればよいですか?
-
[解決済み】メッセージキューとウェブサービスは?[をご紹介します。]
-
[解決済み】ODataとRESTのWebサービスの違いについて
-
[解決済み】XSDとWSDLの違いは何ですか?
-
[解決済み] WSDL、SOAP、RESTとは何ですか?
-
[解決済み] なぜSOAPベースのサービスではなく、RESTを使うのか?[クローズド]
-
[解決済み] なぜRESTful Webサービスが必要なのか?
-
[解決済み] リアルライフトレーディングAPI【クローズド
-
[解決済み] WSDLとRESTの長所と短所