【问题标题】:Passing an array of integer in POST body in a DELETE method在 DELETE 方法中传递 POST 正文中的整数数组
【发布时间】:2014-07-24 11:34:34
【问题描述】:

我不知道,但这对我来说似乎模棱两可。我正在尝试发出一个 DELETE 请求,应用于多个对象,并使用它们的 ID(数组中的 ID)引用。

这是我的控制器:

    [HttpDelete]
    public void RemoveRoomWithDevices([FromUri]int roomId, [FromBody] int[] userDevicesId)
    { //code
    }

这是JS:

    function DeleteRoomWithDevices(RoomID, FloorId, userDevicesID) {
    $.ajax({
        url: "/api/Room/RemoveRoomWithDevices?RoomId=" + RoomID,
        type: "DELETE",
        dataType: 'json',
        contentType: 'application/json',
        data: {
            userDevicesId: userDevicesID
        },
        traditional: true,
        success: function (data) {//success}
    });

这里,在 POST 列中,数组未通过(我正在使用 firebug 进行调试)。当我用type: "POST" 替换类型时,我可以看到数组,但无法执行删除查询。

你有什么建议?

【问题讨论】:

  • 我不确定,但我认为DELETE 不应包含请求正文。规范中没有禁止它(w3.org/Protocols/rfc2616/rfc2616-sec9.html),但我过去读过一些东西,控制器只是忽略它。为什么不能在 POST 中执行删除查询?更重要的是,您可以将数组作为 URL 传递 - 如果这样的数组不大。
  • 是的,当我这样做时,我收到了这个错误 {"Message":"The requested resource does not support http method 'POST'."}
  • 关于删除正文的精彩讨论:stackoverflow.com/questions/14323716/…。如何在 GET(和 DELETE)中传递数组参数:stackoverflow.com/questions/9981330/…
  • @Sahar Ch 将类型 DELETE 更改为 POST 是不够的 - 您应该将操作属性从 HttpDelete 更改为 HttpPost :)
  • 啊,是的!我怎么错过了!我试试看谢谢

标签: c# asp.net arrays ajax


【解决方案1】:

用数据传递两个参数,它们的名称应该与方法的参数匹配:

$.ajax({
        url: "/api/Room/RemoveRoomWithDevices",
        type: "DELETE",
        dataType: 'json',
        contentType: 'application/json',
        data: {
            roomId: RoomID,
            userDevicesId: userDevicesID
        },
        traditional: true,
        success: function (data) {//success}
    });

【讨论】:

    【解决方案2】:

    “规范没有明确禁止或阻止 http 正文” Is an entity body allowed for an HTTP DELETE request?

    根据我自己的观点,删除请求不应包含任何正文,并且必须准确指向一个要删除的资源(/cars 表示所有集合 /cars/{id} 表示特定实体) 批量删除不是很明显的话题你可以看看下面的话题了解一下

    Patterns for handling batch operations in REST web services?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 2022-12-03
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多