我正在构建一个全栈应用程序,现在希望能够通过单击按钮删除单个对象(我的数据库中的问题)的功能。当我通过邮递员测试时,后端的我的API可以用于此目的:它返回200 OK,当我检查记录被有效删除时。但是,当通过我的前端尝试相同的操作时,这不起作用。
后端API:
[Route("api/removeQuestion")]
[HttpPost]
public IActionResult RemoveQuestion(int questionId)
{
Question question = _context.Questions.SingleOrDefault(q => q.QuestionId == questionId);
if (question == null)
{
return NotFound();
}
else
{
_context.Questions.Remove(question);
_context.SaveChanges();
return Ok();
}
}
前端API:
removeQuestion(questionId:number) {
var url = "http://localhost:57222/api/removeQuestion";
console.log("id is: " + questionId);
return this.http.post(url, questionId).map(
res => <Question>res.json()[0],
err => console.log(err)
);
}
我称之为API:
removeQuestion(id:number){
this.api.removeQuestion(id).subscribe(
res => {
this.question = res;
},
error => this.errorMessage = <any>error
);
}
你会注意到我正在映射一个响应,而我并不真的需要一个,我这样做是一种解决方法因为我的帖子根本没有通过,除非我这样做。
在我自己理解问题的程度上,它没有成功找到基于具有SingleOrDefault的id值的适当对象,因此恢复到默认值null(?)。但是,在调用API之前,我的控制台中正确记录了id,并且当我发送带邮递员的手动帖子时,它可以正常工作。
答案 0 :(得分:0)
试试这个,
public class Thread1 extends Thread{
int s ;
}
public class MainThread {
int y =89;
public static void main(String[] args) {
Thread1 j = new Thread1();
System.out.println(j.s=43);
}
}
答案 1 :(得分:0)
尝试添加[FromBody]:
public IActionResult RemoveQuestion([FromBody]int questionId)
答案 2 :(得分:0)
我得到了朋友的帮助,他找到了原因。
我的后端中的API方法一直试图反序列化它接收的内容,这显然是不可能使用整数。
我已经更改了传递整个Question对象的功能,现在它可以正常工作。
新代码:
[Route("api/removeQuestion")]
[HttpPost]
public IActionResult RemoveQuestion([FromBody] Question question)
{
if (question == null)
{
return NotFound();
}
else
{
_context.Questions.Remove(question);
_context.SaveChanges();
return Ok();
}
}
并调整前端,以便传递对象。
removeQuestion(question:Question) {
var url = "http://localhost:57222/api/removeQuestion";
return this.http.post(url,question).map(
res => <Question>res.json()[0],
err => console.log(err)
);
}