我正在对库中的成员开发crud应用程序,我希望执行delete操作,但它不起作用。请帮我解决这个问题。
Rest
@DeleteMapping("/members")
public Member delete(@RequestBody Member member){
repository.delete(member);
return member;
}至于其余的Api,它工作得很好,我用邮递员检查过。
service.ts
export class Member{
constructor(
public id:string,
public name:string,
public fBook:Book,
public contact:string,
){
}
}
export class Book{
constructor(
public author:string,
public name:string,
public year:string
){
}
}
export class HttpClientService {
constructor(
private httpClient: HttpClient
) { }
private url= 'http://localhost:8080/members';
deltMem(member: Member){
return this.httpClient.delete<Member>(this.url);
}
}deltecomp.ts
export class DeleteComponent implements OnInit {
members: Member[];
constructor(
private httpClientService: HttpClientService
) { }
deleteMember(members:Member){
this.httpClientService.deltMem(members).subscribe(
res => {
console.log(res);
}
)
}}发布于 2020-07-06 08:05:06
将body内容发送给REST Delete方法并不是一种常见和良好的实践。即使是不被禁止的。我不建议你用它。You can read this post为您提供更多细节。
事实上,Angular并不像普通和简单的方式那样支持它。您可以,但您需要额外的代码,请参阅this post for more details。
如果您正在设计后端架构(我的意思是您可以自由地调整和设计它),在这种情况下,我强烈建议您使用id来标识您想要删除的资源:
DELETE http://your-api-service/members/15
它更清晰,简单,可读性更强。
因此,您的Spring Boot代码应该是:
@DeleteMapping("/members/{memberId}")
public Member delete(@PathVariable("memberId") Integer memberId){
Member memberToDelete = repository.findById(memberId);
// ... delete member
return memberToDelete;
}你的Angular code:
deleteMember(member: Member){
return this.httpClient.delete<Member>(`${this.url}/${member.id}`);
}https://stackoverflow.com/questions/62749507
复制相似问题