我正在尝试使用REST API向数据库添加新记录。 DELETE和GET方法工作正常,但我无法弄清楚POST方法有什么问题。
我的API控制器:
[HttpPost] // POST: api/Contacts //to add image as param?
public void InsertNewContact([FromBody]Contact Contact)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConStr"].ConnectionString);
SqlCommand cmd = new SqlCommand(@"INSERT INTO Contacts(Name,Phone,Mail,City,Address) VALUES(@Name, @Phone,@Mail,@City,@Address)", con);
SqlParameter Name = new SqlParameter("@Name", Contact.Name);
cmd.Parameters.Add(Name);
SqlParameter Phone = new SqlParameter("@Phone", Contact.Phone);
cmd.Parameters.Add(Phone);
SqlParameter Mail = new SqlParameter("@Mail", Contact.Mail);
cmd.Parameters.Add(Mail);
SqlParameter City = new SqlParameter("@City", Contact.City);
cmd.Parameters.Add(City);
SqlParameter Address = new SqlParameter("@Address", Contact.Address);
cmd.Parameters.Add(Address);
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
}
finally
{
con.Close();
}
}
HTML中的HTTP POST请求:
$scope.add_to_db = function ()
{
//insert contact to db
$http.post(url + "/api/Contacts",
JSON.stringify({ Name: $scope.contactName, Phone: $scope.contactPhone, Mail: $scope.contactMail, City: $scope.contactCity, Address: $scope.contactAddress}))
.then(function (res) {
$state.go("contacts");
}, function (err) { alert(err); });
}
响应返回到成功函数,但数据库中没有任何更改。这可能是什么问题?
答案 0 :(得分:0)
Catch Block为空以了解错误,通常我会经历这些情况,并确保在代码中实现以下内容以追踪失败原因:
1)API控制器中的@RequestBody应该接受联系模型 数据
2)检查以角度创建的JSON对象是否与联系模型/ POJO同步。
3)使用 POSTMAN 最初只调试REST API,这可以帮助您追踪失败。