2012-01-30 6 views
2

サッカーデータをデータベースに表示/追加/削除/編集するRESTサービスを作成しようとしています。 私はこれをどのように達成できるかをデザインしましたが、かなり複雑になりました。これはRESTfulですか? Tonicの使用

たとえば、目標が採点された場合、どのURLを呼び出す必要がありますか?

質問は正しい方向に進むのか、何か別の方法でアドバイスするのですか?

enter image description here

答えて

2
  • 私はPUTはいつも編集に使用すべきではないという事実を除いてAbhiniav's answerに同意:

    StackOverflowのは、ここではかなり詳細な議論があります。あなたがsending the new complete resourceの場合にのみ使用してください。変更または部分を送信する場合は、POSTを使用するか、あまり知られていないPATCHを使用します。

  • Safe and Idempotent methodsを読んでおくと便利です。
  • ゴール数:/{country}/team/{team_id}/goalsを更新するには、POSTまたはPATCHを使用するのが最も一般的です。
  • 何かがRESTでない最大の理由は、サービスが検出できないためです。 HATEOASにお読みください。
+0

素晴らしいと、余分な情報をありがとう! – nhaarman

+0

冪等ではなく、セッターセマンティクスの部分更新があるので、編集にPOSTを使用することはお勧めしません。 PATCHを使うのは部分編集のための最善のアドバイスです(ただしPUTほど普及していません)。 – mtsz

+0

@mtszプロトコルで定義されているPOSTは冪等ではありませんが、冪等の部分変更POSTを実装できないわけではありません。私は間違いなくPATCHについてあなたに同意します。それが私がそれを言及する理由です。 –

1

すべてはあなたがPUTやPOSTを切り替える必要があることを除いて、あなたの構造に罰金です。 PUTはレコードの更新/作成の両方に使用できます。事前にリソースIDを知っている場合は、PUTを使用することができます。

POSTは、IDがわからない新しいリソースを作成するときに使用されます。 PUT vs POST in REST

+0

この例(http://blog.bucket440.com/?p=209)では実際にPOSTを使用してPUTを作成し更新しています。 – nhaarman

+0

それを見たことはありませんでした。私は通常、PHPベースのRESTフレームワークから敬遠しています。それらのほとんどは誤った実装をしています。 :) – Abhinav

関連する問題