c# - REST http 放置调用

标签 c# angularjs rest http put

我正在尝试对我的服务进行 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/

相关文章:

当值太大时 C# 代码返回方法外

c# - 如何使用 .NET Core CLR 连接到 Postgresql 数据库

angularjs - Angular 上的印度尼西亚货币

angularjs - 嵌套指令未编译

c# - rest web api 返回类型的最佳实践

c# - 从我的 stringbuilder 中删除一个字符

带有函数的 AngularJS ng-bind

rest - 如何防止 SQL 注入(inject)并提高 REST API 的安全性?

java - 将 JSON 对象映射到 Hibernate 实体

c# - System.IO.IOException C# 当 FileInfo 和 WriteAllLines