私はこれをできるだけシンプルにしようとします、それはまるで疑問のような質問かもしれません。REST:行を更新し、同じリクエストで他のリソースをゼロ個以上作成する方法は?
私は7歳のWebアプリケーション(ヘルプデスクソフトウェア)を書き直しています。異なるクライアントのWebブラウザとモバイルアプリで消費されるためには、REST APIにする必要があります。また、今のところうまく機能していたオリジナルとできるだけ近いビジネスロジックを維持することが求められます。
RESTに関する現在の闘争:私は必要なもの
は、リソースを更新することで、このリソースは、この変更のレコードを変更したのstatus_id
は、両方の、保存する必要がある場合は/tickets/47321
を言うことができますall-or-nothingである必要があるため、同じDBトランザクションで使用します。これは元のアプリケーションがどのように動作したかを示しており、この動作を維持したいと考えています。
は、そこで質問です:
することができます私のtickets/47321
(status_id
が異なる場合)、サーバーに存在するリソースを更新し、歴史変化の新しいレコードを作成するためのリソース全体または部分的な状態表現と復帰へPUT
彼らは両方のバックJSONとしてクライアントへ:
{
ticket: {}, // new ticket state
history: {} // the new created record of history change
}
この方法でクライアントがticket
を更新し、任意のビーイングのリターンがある場合は履歴の変更のリストに歴史を追加することができますか?
はい、これを行うことができます。 Javaでは、軽量なRESTフレームワークの中には、RestletsやJAX-RSなどがあり、Springは重い側で良いものです。 –
通常、この動作はREST APIで発生するのですか?更新するリソース全体ではなく、 'PUT'の部分表現を送るのはどうですか? –
なぜ部分表現を送信したいですか? –