mauve
1
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")
};
}
mythz
2
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(),
};
}