0

いくつかの URL に対してPUTクエリを送信する必要があります。ただし、本文(JSON、{"id": 1}など)が含まれている場合は、クエリを拒否してください。$http の代わりに ngResource を使用している場合、クエリには既に本文が含まれています。どうすれば削除できますか?

予想される URL のサンプル:

http://some.com/rest/some/1/smth?method=start

Url には :id パラメータが含まれているため、私の工場は次のようになります。

.factory('ApiResourceFactory', ['$resource', function ($resource) {
        return {
            payment: $resource('http://some.com/rest/some/:id/smth',
                {orderId: '@id'},
                {
                    start: {method: "PUT", 'params': {'method': "start"}},
                    //...
                }
            )
         }
}])

それが私がそれを使用する方法です:

var id = 1;
ApiResourceFactory.payment.start({id: id}, function () {
    //on success
}, function (responce) {
    //on error
});

問題は次のとおりです。「id」パラメーターは、URL だけでなく、リクエスト本文 (リクエスト ペイロード) でも {"id": 1} として送信されます。

本文がない場合 (たとえば、$http を使用している場合)、クエリは成功しますが、本文サーバーがクエリを拒否します。

そう。どうすればngResource をクリアするか、本文を埋めないように伝えることができますか?

4

1 に答える 1

1

Angular のドキュメント$resourceはあまり良くありませんが、ドキュメントの最後の例を見ると答えが得られます。「カスタム 'PUT' リクエストの作成」セクションを参照してください。

設定方法がparams正しくありません。を使用する@と、パラメーターの一致は本文のコンテンツから行われます。paramsオブジェクトを提供する必要はありません。また、start メソッドの呼び出しも少し異なります。

ここで私のフィドルを参照してくださいhttp://jsfiddle.net/cmyworld/wLQnq/

于 2014-07-05T12:32:12.480 に答える