Return HTTP Code 201 on successful POST call

How can I return a HTTP Code 201 when using response objects?

The following code generates a 200er:

    public CreateOrderDraftResponse Post(CreateOrderDraftRequest request)
    {
        var id = this.Db.Insert(request.OrderDraft,true);
        
        return new CreateOrderDraftResponse
        {
            OrderNo = !String.IsNullOrEmpty(request.OrderDraft.OrderNo) ? request.OrderDraft.OrderNo : id.ToString(),
            ResponseStatus = new ResponseStatus("201", "Order draft created")
        };
    }

ResponseStatus is only using for capturing structured error responses.

You can either return a HttpResult, e.g:

var response = new CreateOrderDraftResponse {
    OrderNo = !String.IsNullOrEmpty(request.OrderDraft.OrderNo) 
        ? request.OrderDraft.OrderNo 
        : id.ToString(),
};
return new HttpResult(response, HttpStatusCode.Created) {
    StatusDescription = "Order draft created"
};

Or you can customize HTTP Responses using the [AddHeader] Request filter attribute, e.g

[AddHeader(HttpStatusCode.Created, "Order draft created")]
public object Post(CreateOrderDraftRequest request)
{
    var id = this.Db.Insert(request.OrderDraft,true);    
    return new CreateOrderDraftResponse {
        OrderNo = !String.IsNullOrEmpty(request.OrderDraft.OrderNo) 
            ? request.OrderDraft.OrderNo 
            : id.ToString(),
    };
}