2
[WARN][TiAPI   (  480)]  [REST API] apiCall  [object Object]
[WARN][TiAPI   (  480)]  [REST API TYPE] apiCall  POST
[WARN][TiAPI   (  480)]  [object Object]
[WARN][TiAPI   (  480)]  [REST API] apiCall  [object Object]
[WARN][TiAPI   (  480)]  [REST API TYPE] apiCall  PUT

初めてサービスにアクセスすると、サービスはPOSTタイプで呼び出されますが、2回目はPOSTではなくPUTを送信します。実際にリクエストタイプを常にPOSTにするにはどうすればよいですか。

http://backbonejs.org/#Model-save

4

2 に答える 2

2

バックボーンは、PUTする特定のURLを知らないため、POSTを実行します。ただし、事前にURLを知っている場合は、PUTが正しい方法です。デフォルトでは、Backboneは「id」プロパティが存在する場合はそれを使用してURLを作成します。したがって、「id」がない場合は、次のように、サーバーにIDを設定する必要があると想定します。

=>
POST {"foo":"bar"} /things
<=
200 OK {"foo":"bar","id":"a36f933"}

ただし、クライアントでIDを生成する場合、またはIDを既に知っている場合、BackboneはPUTを実行し、サーバーが次のようにそれを受け入れると想定します。

=>
PUT {"foo":"bar","id":"12345abc"} /things/12345abc
<=
200 OK {"foo":"bar","id":"12345abc"}

これはすべて、RESTful URLがどのように機能するか、およびべき等のPUT要求とは対照的に、べき等でないPOST要求の背後にある意図と意味に一致しています。べき等を理解している場合、Backboneの動作は意味をなし始めます:)

http://en.wikipedia.org/wiki/Idempotence

http://quoderat.megginson.com/2011/11/17/post-put-idempotence-and-self-identification/

于 2013-02-28T01:34:41.093 に答える
1

バックボーンは、デフォルトCRUDでデータエンドポイントとの同期に使用されます。これは、最初のAPI呼び出しがPOST作成アクションの場合)であり、2番目の呼び出しで、モーダルにが含まれているためid、バックボーンがPUT更新アクションの場合)を送信することを意味します。

の使用を強制するには、 Backbone.syncPOSTをオーバーライドする必要があります。

于 2013-02-28T01:14:55.560 に答える