Asp.net 对部分成功发布到Web API的响应

Asp.net 对部分成功发布到Web API的响应,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-web-api,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Web Api,如果有许多对象被发送到我的web api控制器,并被插入到我的数据库中,其中一些可能成功,一些可能失败,那么给出的最佳响应是什么?我认为一个普通的HTTP响应是不够的——找到某种方法返回一个JSON字符串,其中包含哪些已经成功,哪些还没有成功,这会更好吗?如果是的话,我会怎么做 我的Post控制器如下所示 谢谢你的帮助 标记 您可以返回一个JSON列表,其中包含未能插入的对象的ID: { "failedIds": [ 4, 7, 9

如果有许多对象被发送到我的web api控制器,并被插入到我的数据库中,其中一些可能成功,一些可能失败,那么给出的最佳响应是什么?我认为一个普通的HTTP响应是不够的——找到某种方法返回一个JSON字符串,其中包含哪些已经成功,哪些还没有成功,这会更好吗?如果是的话,我会怎么做

我的Post控制器如下所示

谢谢你的帮助

标记


您可以返回一个JSON列表,其中包含未能插入的对象的ID:

{
    "failedIds": [
        4,
        7,
        9
    ]
}
500 HTTP响应状态代码似乎也很合适,因为请求未成功完成

您甚至可以更进一步,解释每个特定id的插入失败原因:

{
    "failed": [
        {
            "id": 4,
            "reason": "database unavailable"
        },
        {
            "id": 7,
            "reason": "network cable unplugged"
        },
        {
            "id": 9,
            "reason": "a thief is currently running away with our server"
        }
    ]
}

您好-我是否需要创建一个模型,向其中添加ID/successful/successful,然后返回?那么,是否需要与HttpResponseMessage(控制器的第一行)不同的东西来允许发送JSON和HTTP响应?(谢谢)是的,您必须创建一个模型。然后
return Request.CreateResponse(HttpStatusCode.InternalServerError,modelOfFailedIds)再一次,你帮了一个新手一个基本的问题-谢谢你@Darin Dimitrov-我会在允许的情况下尽快给出答案。我不会选择500。500表示服务器错误。有些情况下,服务器在处理请求时没有任何问题,但业务条件决定预订不应成功。500实际上会在某些客户端库中引发异常。如果你采用这种方法,那么200是更正确的。啊,是的,当然,如果商业条件决定了这一点,那么500是不合适的。如果出现内部服务器错误,则应使用500。不幸的是,OP没有足够详细地解释他的场景,以及他预期的失败类型。
{
    "failed": [
        {
            "id": 4,
            "reason": "database unavailable"
        },
        {
            "id": 7,
            "reason": "network cable unplugged"
        },
        {
            "id": 9,
            "reason": "a thief is currently running away with our server"
        }
    ]
}