【问题标题】:$http.delete server request from not working$http.delete 服务器请求不工作
【发布时间】:2016-09-23 19:48:47
【问题描述】:

我正在尝试向我的 API 发出 http 删除请求,但调用失败。 Get 和 Post 方法可以完美运行,但 delete 调用却不行。我的猜测是问题出在客户端代码上,但无法弄清楚是什么。这是客户的代码

        $http.delete("http://localhost:69174/api/posts", postId)
            .then(function (response) {

                // sucess delete
                viewModel.posts.delete(response.data);
                viewModel.newPost = {};

            }, function () {

                // failed to delete
                viewModel.errorMessage = "Failed to delete post";

            })
            .finally(function () {

            });

这是API函数

    // DELETE api/values/5
    [HttpDelete("{id}")]
    public async Task Delete(Guid id)
    {
        await _postsRepo.DeletePostAsync(id);
    }

还有一个问题,从客户端对 API 进行 http 调用,直接从我的 AngularJs 控制器或 ASP.NET 控制器发出请求的最佳做法是什么?

【问题讨论】:

  • 您是否在开发者工具中确认了目标网址?
  • 是的,我做到了。我能够开始工作并发布了我的工作方式,但我想知道为什么它不适用于我之前的实现,以及是否有更好的解决方案

标签: c# asp.net angularjs http asp.net-web-api


【解决方案1】:

这允许调用成功,但不确定即使在删除时通过 url 传递 id 是否是一个好习惯

$http.delete("http://localhost:69174/api/posts/" + postId)
        .then(function (response) {
            ...
        }, function () {
            ...
        })
        .finally(function () {
            ...
        });

【讨论】:

  • “不确定在删除时通过 url 传递 id 是否是一种好习惯”,这很好,并且是 RESTful 设计的标准。如果您的 API 的其余部分遵循 REST 设计的基础,请考虑使用 $resource 而不是 $http 以获得更简单的抽象。
  • 是的,我的 API 的其余部分遵循 RESTful 设计。我该怎么做?我尝试在我的代码中将 $http 替换为 $resource 并且它没有调用 API
  • 哦,感谢您对良好做法问题的反馈 :)
  • 使用$resource$http 有点不同。有很多关于这个主题的指南和文档。 Angular documentation 是一个起点。
猜你喜欢
  • 2019-02-14
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 2011-02-14
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多