2011-07-17 7 views
1

Googleのウェブアプリケーション用のREST APIを設計中です。次のURI/apps/{id}を渡すとRESTですか?control = start

POST> /アプリ>アプリ
PUT> /アプリ/ {ID}は>私はアプリを起動するアプリ

をアップデートを作成します。 このRESTですか、そうでない場合は、もっとRESTfulにするにはどうすればよいですか? ?http://kenai.com/projects/suncloudapis/pages/CloudAPISpecificationResourceModels

それともそれは優れていると::
2. PUT /アプリケーション/ {

  1. POST> /アプリケーション/ {ID}コントロール=開始

日クラウドAPIはこれを行いますid}と応答Json/XMLにステータスパラメータを含めますか?
3. POST/apps/{id}と応答Json/xmlにステータスパラメータを含めますか?
4. POST /アプリケーション/スタート!アプリ= {ID}

答えて

1

PUT apps/{id}

私はon

2

にそれがoffからステータスのアップデートするアプリをかけることになり、私はここで右の質問は以上だと思いますアプリケーションが可能な限りRESTfulであるかどうかではなく、HTTP動詞が意図したとおりに使用されているかどうか。しかし、今日では、2つの概念はほぼ同じです。

PUTについては、PUTはすぐにGETにできるはずです。言い換えれば、PUTは、リソースの卸売替えを行います。 apps/5に格納されているリソースが、その状態の一部として「control」属性を持つものである場合、control = start部分は、配置した表現の一部でなければなりません。新しいリソースだけを送信する場合は、PUTで​​はなくPATCHを実行しています。

PATCHは広くサポートされていないため、IMHOを使用する必要があります。 POSTには、安全性や冪等の要求はありません。一般的には、リソースの一部にパッチを当てるなど、POST(多かれ少なかれ)で必要なことを行うことができます。結局のところ、これはPOSTを使ってコレクションに新しいアイテムを作成するときの作業です。リソースの一部を更新することは、まったく異なるわけではありません。

一般に、リクエスト本体に新しいデータをPOSTしますが、クエリパラメータではありません。クエリパラメータは、主にGETに使用されます。 :)私は何かなどをやりたい

+0

Rayあなたが言っているのは、「control = start」はクエリパラメータであり、POSTでは使用しないでください。 – Samad

+0

URLの '? 'に続くパラメータの専門用語は、実際には「クエリパラメータ」です。それらは一般にGETで使用され、 'GET/apps?author = Samad&platform = ios'などで返されるオブジェクトのコレクションを制限します。これはあなたが作成したすべてのiPhoneアプリのコレクションを返します。 :)これは、すべてのアプリケーションを返す 'GET/apps 'と、id = 5の単一のアプリケーションを返す' GET/apps/5'との違いを見てください。あなたはPOSTでクエリパラメータを使用できます(誰もあなたを止めることはできません)が、HTTPの_convention_はエンティティボディ内のPOSTデータになります。それは、POSTが何であるかに沿ったものです。 –

-1

は、

POST /runningapps?url=/app/1 
+1

ああ、どうぞ、私を落胆させてくれた人は、私に理由を与えてください。 –

2

は、それが状態のアプリの変更を開始していますか? (例えば "実行中"へ)あなたが実際にやっていることは、リソース(アプリケーション)の状態を更新することです。これは、PUT操作のための良い使用のようです。 Rayが言ったように、コントロールがリソースの状態の一部である場合、PUTリクエストの本文には、更新中の状態が含まれている必要があります。私は部分的な更新が可能であると信じています(CouchDBはこれを使用しています)。

一方、アプリケーションの起動とは、新しいリソース(たとえば、アプリケーションの実行を表す)を作成することを意味する場合、POSTメソッドが適しています。

POST /app/1/start 

これは、HTTP/1.1 201 Createdになります。私に

GET /app/1/execution/1 

が、これは良い「RESTfulな」アプローチのように見えるでしょう:次に、作成した実行上の情報にアクセスするには、次のようなURLを使用することができます。詳細については、articleをご覧ください。

関連する問題