我正在尝试从Angular 2前端与某种程度上的RESTful API对话。
要从集合中删除某些项,除了removée唯一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.
现在,我是不是在语法方面做错了什么?我非常确定每个RFC都支持删除正文
有没有更好的发送数据的方法?
或者我应该把它转储到头文件中,然后就到此为止?
对这个难题的任何见解都将不胜感激。
发布于 2018-10-16 21:41:35
如果你使用Angular 6,我们可以把body放在http.request
方法中。
你可以试试这个,对我来说很有效。
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
constructor(
private http: HttpClient
) {
http.request('delete', url, {body: body}).subscribe();
}
}
发布于 2018-03-28 22:37:11
在Angular 5中,我必须使用request
方法而不是delete
来发送正文。delete
方法的文档不包括body
,但它包含在请求方法中。
import { HttpClient, HttpHeaders } from '@angular/common/http';
this.http.request('DELETE', url, {
headers: new HttpHeaders({
'Content-Type': 'application/json',
}),
body: { foo: bar }
});
发布于 2016-12-02 18:14:40
实际上,您可以通过使用request
方法欺骗Angular2 HTTP
发送带有DELETE
的body
。这是如何实现的:
let body = {
target: targetId,
subset: "fruits",
reason: "rotten"
};
let options = new RequestOptionsArgs({
body: body,
method: RequestMethod.Delete
});
this.http.request('http://testAPI:3000/stuff', options)
.subscribe((ok)=>{console.log(ok)});
注意,您必须在RequestOptionsArgs
中设置请求方法,而不是在http.request
的替代第一个参数Request
中设置。
我希望这对我有帮助,也希望我不会迟到。我认为angular的家伙在这里是错误的,不允许使用delete传递正文,即使这是不鼓励的。
https://stackoverflow.com/questions/38819336
复制相似问题