2016-05-10 22 views
0

REST APIの背後にあるリソースがあるとします。このリソースは、通常のHTTP動詞のPUTまたはPATCHを使用して変更できます。ただし、リソースの変更を行うかどうかを決定するために、APIの背後にあるサーバーがいくつかの前提条件を確認しなければならないとしましょう(たとえば、銀行口座から金額を引き出す)。REST APIで呼び出しを変更する方法

この場合、リソースの変更された属性の新しい値についてサーバーが知っているだけなので、POST(新しいリソースを追加したくないため)やPUTまたはPATCHは使用されません。要求された変更をまったく許可します。上記の例では、アカウントの新しい残高をサーバー側で計算する必要があります:balance = balance - amount、クライアントがPUTまたはPATCHで行うことができる知識はリソースを既に変更したを送信することですアカウント)またはそのリソースの属性(アカウントの残高)。

この場合、APIデザイナーは、リソースを指すURLにパラメータ(例:.../account?withdraw = amount)を指定する必要があるとします。この操作の正しいHTTP動詞は何でしょうか?

+0

あなたの質問はちょっとあいまいですが、単純な "HTTP POST"を探していると思います。 URLの構文は無関係であり、POST要求では通常、どのクエリ部分も持ちません。ペイロードは「投稿済み」です。 – arkascha

+0

私の編集がより曖昧でないように見てください –

+0

これは何も変わりません。変更要求を送信しようとしているため、不完全なデータです。それがPOSTの目的です。 – arkascha

答えて

1

はPOSTを使用しても使用はありませんあなたが

を(我々は新しいリソースを追加したくないので)。金銭的交換はトランザクションで表現することができます。したがって、新しいトランザクションを作成しています。

トランザクションの詳細を/transactionエンドポイントにしてPOSTを実行するだけです。

あなたは確かに、ユーザーにPUTの新しい口座残高を許可したくはありません。これは、RESTのすべての対立であるHTTP経由の原子性を必要とするためです。クライアントはトランザクション前の残高を知っていることを確認する必要があります。何らかの形で取引が行われる前に取引は行われません。

関連する問題