POST一个无效对象:我必须返回什么HTTP状态代码

本文关键字:返回 什么 HTTP 代码 状态 一个 对象 无效 POST | 更新日期: 2023-09-27 18:26:45

我正在使用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(HTTP416)。但我不知道这是否是在POST一个无效的Message时返回的HTTP状态代码。

当我POST一个无效对象时,我必须返回什么样的HTTP状态代码

POST一个无效对象:我必须返回什么HTTP状态代码

通常,当您可以管理异常时,您将使用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

来自RFC7231(https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1):

6.5.1.400错误请求

400(错误请求)状态代码表示服务器无法或者由于感知到的事情而不会处理请求是客户端错误(例如,格式错误的请求语法、无效请求消息成帧或欺骗性请求路由)。