[英]How to pass body through `httpclient` delete request in Angular5
如何在刪除請求中通過 httpClient 傳遞正文?
請檢查我的代碼。 是否有任何想法在刪除請求中通過正文傳遞數據。 沒有正確的來源如何在 angular 5 中調用此請求。
let body = removeFile;
return this.httpClient.delete(`${apiRoot}RemoveQueryData`, {
headers: new HttpHeaders().set('Content-Type', 'application/json').set('Authorization', `Bearer ${accessToken}`),
observe: removeFile
})
我正在通過的那個身體觀察。 它拋出以下錯誤。
錯誤:
Error: Unreachable: unhandled observe type [object Object]}
at HttpClient.request (http.js:1520)
at HttpClient.delete (http.js:1546)
目前 Angular HttpClient 不支持刪除方法中的正文,您可以通過請求選項發布正文。
let body = removeFile;
let queryParams = new HttpParams().set('key', value); // key and value are both strings
let headerData = new HttpHeaders().set('Content-Type', 'application/json').set('Authorization', `Bearer ${accessToken}`);
return this.httpClient.delete(`${apiRoot}RemoveQueryData`,
new RequestOptions( {
headers: headerData, // optional
params: queryParams, // optional
body: body,
observe: 'response', // optional
responseType: 'response' // default type json ...
})
);
這可能不是與 angular 相關的問題,而是事實上 verv DELETE 可能沒有附加主體。 它用於刪除資源,因此它的響應應該只是代碼。
現在我建議您使用POSTMAN測試您的終點,以便您可以仔細檢查您是否正在接收正文。 那么如果你在使用郵遞員后確定屍體在那里,那么我們也許可以對這個屍體做一些事情。
您還可以在網絡選項卡上檢查您的 chrome 控制台,以檢查對 DELETE 請求的響應。
幾年前我確實遇到過這個問題。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
請求有正文可能
成功的反應有身體可能
安全否
冪等是
可緩存否
允許在 HTML 表單中使用否
https://restfulapi.net/http-methods/#delete
HTTP DELETE 顧名思義,DELETE API 用於刪除資源(由 Request-URI 標識)。
如果 > 響應包含描述狀態的實體,則 DELETE 請求的成功響應應該是 HTTP 響應代碼 200(OK),如果操作已排隊,則為 202(已接受),如果操作已執行但為 204(無內容)響應不包括實體。
DELETE 操作是冪等的。 如果您刪除一個資源,它將從資源集合中刪除。 在該資源上重復調用 DELETE API 不會改變結果——但是第二次在資源上調用 DELETE 將返回 404(未找到),因為它已被刪除。 有些人可能會爭辯說它使 DELETE 方法非冪等。 這是一個討論和個人意見的問題。
如果請求通過緩存並且請求 URI 標識了一個或多個當前緩存的實體,則這些條目應該被視為過時。 對此方法的響應不可緩存。
例如,如果您使用 angular,則使用 httpClient,您可以實現這樣的功能,目前它適用於 angular 6+
deleteWithBody(module: string, key: string, value: any): Observable<any> {
const options = {
headers: new HttpHeaders(),
body: value
};
return this._httpClient.delete(
this.baseUrl + module + this.env + '/' + key,
options
);
}
希望對你有幫助,問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.