1. ホーム
  2. angular

[解決済み] Angular2でのHttp.DELETEリクエストのボディ

2023-05-16 12:51:03

質問

Angular 2のフロントエンドから、RESTfulなAPIに接続しようとしています。

コレクションからアイテムを削除するには、削除されたユニークID(URLに追加可能)に加えて、他のデータ、すなわち認証トークン、コレクション情報、および補助的なデータを送信する必要があります。

私が見つけた最も簡単な方法は、認証トークンをリクエストヘッダーに置き、他のデータをボディに置くことです。

しかし、Angular 2のHttpモジュールは、ボディを持つDELETEリクエストを全く認めず、このリクエストを作成しようとします。

let headers= new Headers();
headers.append('access-token', token);

let body= JSON.stringify({
    target: targetId,
    subset: "fruits",
    reason: "rotten"
});

let options= new RequestOptions({headers:headers});
this.http.delete('http://testAPI:3000/stuff', body,options).subscribe((ok)=>{console.log(ok)}); <------line 67

はこのようなエラーを出します。

app/services/test.service.ts(67,4): error TS2346: Supplied parameters do not match any signature of call target.

さて、私は構文的に何か間違ったことをしているのでしょうか?DELETEボディがRFCでサポートされているのは確かです。

そのデータを送信するためのより良い方法があるのでしょうか?

それとも、ヘッダーにダンプして、それで終わりにするべきでしょうか?

この難問について、どんな洞察でもかまいません。

どのように解決するのですか?

http.jsの定義から アンカー/http :

delete(url, オプション)

リクエストはボディを受け取らないので、URIにデータを入れるしかないようです。

特に対応するRFCへの参照を持つ別のトピックを見つけました。 ajaxのDELETEリクエストでヘッダー以外のデータを渡す方法