我正在使用WCF开发REST服务,当POST
无效Message
时,我不知道要返回哪种类型的HTTP状态代码。注意:此处的消息类似于聊天消息(文本和一些数据)。
这就是我实现WCF服务的方式:
IServiceContract :
[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "/messages",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
Message AddMessage(Message message);
服务实施:
public Message AddMessage(Message message)
{
OutgoingWebResponseContext ctx =
WebOperationContext.Current.OutgoingResponse;
if (message == null)
{
ctx.StatusCode = System.Net.HttpStatusCode.RequestedRangeNotSatisfiable;
ctx.StatusDescription = "message parameter is null";
throw new ArgumentNullException("message", "AddMessage: message parameter is null");
}
using (var context = new AdnLineContext())
{
context.Entry(message).State = EntityState.Added;
context.SaveChanges();
}
return message;
}
现在我使用RequestedRangeNotSatisfiable
(HTTP 416)。但我不知道这是否是在我发布无效Message
时返回的HTTP状态代码。
发布无效对象时,我必须返回哪种HTTP状态代码?
答案 0 :(得分:2)
通常,您可以在管理例外时使用4xx HTTP状态代码。否则,您将生成5xx HTTP状态代码。
对于您的示例,您可以使用400 Bad Request HTTP Status code
。
10.4.1 400 Bad Request
The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.
来自W3C
答案 1 :(得分:0)
来自RFC7231(https://tools.ietf.org/html/rfc7231#section-6.5.1):
6.5.1。 400错误请求
400(错误请求)状态代码表示服务器不能 或者由于感知到的东西而不会处理请求 成为客户端错误(例如,格式错误的请求语法,无效 请求消息框架或欺骗性请求路由)。