web-dev-qa-db-ja.com

DELETEリクエストで本文を送信するクリーンな方法は何ですか?

$ resource を使用して、DELETEリクエストでリクエスト本文を送信する必要があります

これを行うために私が見ることができた唯一の方法は、変更することでした:

https://github.com/angular/angular.js/blob/master/src/ngResource/resource.js

From

var hasBody = action.method == 'POST' || action.method == 'PUT' || action.method == 'PATCH';

To

var hasBody = action.method == 'POST' || action.method == 'PUT' || action.method == 'PATCH' || action.method == 'DELETE';

これをオーバーライドするより良い方法はありますか?コンテンツタイプヘッダーを変更すると、次のようになります。

$httpProvider.defaults.headers["delete"] = {'Content-Type': 'application/json;charset=utf-8'};

または同様の何か...私はこれをググったが、おそらく私は明らかな何かを見逃した(初めてではない)。事前に助けをありがとう。

23
paullth

これは機能します。

$scope.delete = function(object) {
    $http({
        url: 'domain/resource',
        method: 'DELETE',
        data: {
            id: object.id
        },
        headers: {
            "Content-Type": "application/json;charset=utf-8"
        }
    }).then(function(res) {
        console.log(res.data);
    }, function(error) {
        console.log(error);
    });
};
26
Simba

あなたは注入することができます$httphttp://docs.angularjs.org/api/ng.%24http#Usage )コンポーネントをいずれかのコントローラーに追加し、次のように使用します。

$http({method: 'DELETE', url: 'www.url.com', headers: {'X-MY-HEADER': 'MY_VALUE'}});

私はこれがあなたが期待したことを望みます。

2
Halim Qarroum