我正在尝试对我的服务进行 PUT
调用以更新用户
当代码点击我的 URL 时,我得到 404,但在开发工具中,如果我点击 URL,它会失败,因为它实际上点击了我的 Controller 。我在想我将我的模型作为参数传递错误了,有人能给我指出正确的方向吗,我不确定我做错了什么。
这是我的服务电话
var updateUser = function(user) {
return $http({
method: "PUT",
url: serviceBase + "/UserController/PutUser",
data: user
}).success(successCallBack).error(errorCallBack);
}
这是我的 Controller
[HttpPut]
[Route("api/UserController/PutUser")]
public IHttpActionResult PutUser(UserDto user)
{
try
{
return Ok();
}
catch (Exception)
{
return NotFound();
}
}
我也尝试在我的 $http
调用中使用 JSON.stringify(user)
并且运气不好得到同样的 404
错误但是单击实际链接后,它将到达我的 Controller
谢谢你的建议!
最佳答案
虽然通常的做法是在 PUT 请求中也包含一个标识符,但您仍然可以通过一些小的更改来实现您想要的。
首先更新 Controller 中预期端点的 URL。
注意:这只是一个例子。修改以满足您的特定需求。
public class UsersController : ApiController {
[HttpPut]
[Route("api/Users")]
public IHttpActionResult Put(User user) {
try {
//assuming some form of storage for models
repository.Users.Update(user);
return Ok();
} catch (Exception) {
return NotFound();
}
}
}
...然后更新您的服务调用...
var updateUser = function(user) {
return $http({
method: "PUT",
url: serviceBase + "/api/Users",
data: user
}).success(succesCallBAck).error(errorCallBack);
}
用户
将在请求正文中发送到 Controller 。
关于c# - REST http 放置调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37535638/