我将Angular
与asp.net Api 2
一起使用,但是post方法不能与Angular一起使用,虽然它可以与Postman一起正常工作,并且我将HttpInterceptor
用于用户令牌。
用户服务
saveUser(user: Users) {
const body: Users = {
userName: user.userName,
userPassword: user.userPassword,
userEmail: user.userEmail,
userFullname: user.userFullname,
userFirstname:user.userFullname,
userLastname:user.userFullname,
userType:user.userType,
userPhone :user.userPhone,
userBio :user.userBio
}
return this.http.post(this.rootUrl + '/api/Users/saveUser', body);
}
Api代码
[Route("api/Users/saveUsers")]
[ResponseType(typeof(User))]
public IHttpActionResult PostUser([FromBody] User user)
{
db.Users.Add(user);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = user.UserID }, user);
}
答案 0 :(得分:3)
我发现您提出请求时的API网址错误
localhost:57286//api/Users/saveUsers
所以您应该将代码更改为
return this.http.post(this.rootUrl + 'api/Users/saveUsers', body);
在您的控制器中,您应该具有这样的HttpPost
如果您使用的是ASP.Net,则必须更改为此内容
[HttpPost)]
[Route("api/Users/saveUsers")]
[ResponseType(typeof(User))]
在ASP.Net Core中
[HttpPost("api/Users/saveUsers")]
[ResponseType(typeof(User))]
因此您可以删除Route并替换为HttpPost
如果您仍有问题,请告诉我