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