簡體   English   中英

如何使用angularjs $http.delete() 請求發送數據?

[英]How to send data with angularjs $http.delete() request?

我有一個資源“角色”,它與“用戶”有多對多的關系。 要管理“角色”,我需要將角色 ID 和用戶 ID 發送到服務器,以便它從正確的用戶(不一定是登錄用戶)中刪除角色

這是我正在嘗試的,但根據文檔,這是不可能的。 我知道我可以在 uri 中發送兩個 id,但是我的 laravel 后端會自動設置資源/{resourceid} 的資源豐富的路由,如果可能的話我想使用它。 有沒有辦法做到這一點,我失蹤?

var removeRole = function (roleid, userid) {
        var input =[];
        input.user = userid;

        $http.delete('/roles/' + roleid, input).success(function (data, status) {
            console.log(data);
        });
    };

您可以通過像 /users/1/roles/2 這樣的 URL 執行 http DELETE。 這將是最 RESTful 的方式。

否則我想您可以將用戶 ID 作為查詢參數的一部分傳遞嗎? 就像是

$http.delete('/roles/' + roleid, {params: {userId: userID}}).then...

我的建議:

$http({
    method: 'DELETE',
    url: '/roles/' + roleid,
    data: {
        user: userId
    },
    headers: {
        'Content-type': 'application/json;charset=utf-8'
    }
})
.then(function(response) {
    console.log(response.data);
}, function(rejection) {
    console.log(rejection.data);
});

$http.delete方法不接受請求正文。 你可以試試這個解決方法:

$http( angular.merge({}, config || {}, {
    method  : 'delete',
    url     : _url,
    data    : _data
}));

config您可以傳遞配置數據,如標題等。

多對多關系通常有一個鏈接表。 將此“鏈接”視為一個實體,並為其提供唯一 ID,然后在刪除請求中發送該 ID。

您將擁有像 /user/role 這樣的 REST 資源 URL 來處理對用戶角色“鏈接”實體的操作。

我建議閱讀這個網址http://docs.angularjs.org/api/ngResource/service/$resource

並重新評估您如何調用資源的刪除方法。

理想情況下,您希望調用資源項本身的刪除,而不是將資源的 id 傳遞到 catch all delete 方法中

但是 $http.delete 接受一個包含 url 和 data 屬性的配置對象,您可以在那里制作查詢字符串或將對象/字符串傳遞到數據中

也許沿着這些路線

$http.delete('/roles/'+roleid, {data: input});

請嘗試在httpoptions傳遞參數,您可以按照下面的功能

deleteAction(url, data) {
    const authToken = sessionStorage.getItem('authtoken');
    const options = {
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
        Authorization: 'Bearer ' + authToken,
      }),
      body: data,
    };
    return this.client.delete(url, options);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM