【问题标题】:AngularJS http post and delete dataAngularJS http 发布和删除数据
【发布时间】:2018-07-23 18:25:36
【问题描述】:

在这里使用 angularjs 和 c# webapi。

我正在从传入我的 json 数组的 angularjs 调用我的 webapi。

Angularjs 代码:

    factory.delete  = function (json) {
    var url = 'myUrl';
    return $http.post(url, json).then(function (res) {
        return res;
    }, function (err) {            
        throw err;
    });
   }

C# API:

  [HttpPost("data/delete")]
  public async Task<IActionResult> DeleteData([FromBody] List<UserEntity> 
  jsonData)
  {
     //loop through json and do delete here
  }

是正确的删除方式,我这里用的是post而不是httpdelete。上面的方法有效

我尝试使用 http delete 为:

 factory.delete  = function (ids) {
    var url = 'myUrl';
    return $http.delete(url, ids).then(function (res) {
        return res;
    }, function (err) {            
        throw err;
    });
   }

   [HttpDelete("data/{ids}/delete")]
    public async Task<IActionResult> DeleteData(string ids)
    {

       //here ids is comma separated ids which I want to loop through and delete one by one

    }

这个问题是我在 api 中的 ids 参数始终为空。不知道这里发生了什么。

请输入任何内容。

【问题讨论】:

  • 请提供示例 json 有效负载以及 UserEntity 类的内容。由于这两者是相关的,因此此处的不匹配将导致您的参数值为 null。

标签: javascript c# angularjs


【解决方案1】:

这不是对您问题的直接回答,但会帮助您调试问题。在您的 API 类中添加以下代码将更深入地了解 json 转换为您的参数:

[HttpPost("data/delete")]
public async Task<IActionResult> DeleteData([FromBody] List<UserEntity> jsonData)
{
    if (!ModelState.IsValid)
    {
        var error = ModelState.Values
            .SelectMany(x => x.Errors)
            .FirstOrDefault(x => x.Exception != null);

        return BadRequest(error != null 
            ? error.Exception.Message
            : "Error in JSON request");
     }
     // your regular processing code
}

【讨论】:

  • @carlos 我的 api 在我单独的 .net 核心项目中,我没有在那里得到 ModelState。同样正如我在 HttpPost 的帖子中提到的,它工作正常。我可以在我的 api 控制器中很好地获取我的 json。然后我可以遍历该 json,并删除数据。我的问题是这是正确的删除方式,我的意思是使用http post而不是使用http delete。当我想到使用 HttpDelete 而不是 HttpPost 并且只发送 Id 时,现在来到 HttpDelete,参数 id 始终为空。
  • 哦,对不起,小姐的理解。我实际上会使用 [HttpDelete] 选项。你怎么称呼这个?您是否在 REST 客户端中选择“DELETE”方法,然后使用类似 http://.../api/data/123/delete 的 URL
  • 我已经在我的帖子中发布了删除代码。我正在使用 angularjs 调用我的 api
  • 在我看来应该像这样调用 $http.delete:$http.delete('https:///api/data/' + ids + '/delete ');
  • 卡洛我已经这样做了。似乎还有其他问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2017-08-22
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多