Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I code a Created-201 response using IHttpActionResult

Tags:

How can I code a Created-201 response using IHttpActionResult ?

IHttpActionResult has only these options

  • Ok
  • List item
  • NotFound
  • Exception
  • Unauthorized
  • BadRequest
  • Conflict Redirect
  • InvalidModelState

What I am doing now is this code below, but I would like to use IHttpActionResult and not HttpResponseMessage

public IHttpActionResult Post(TaskBase model)
{
    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, model);
    response.Headers.Add("Id", model.Id.ToString());
    return ResponseMessage(response);
}
like image 874
Devsined Avatar asked May 27 '14 14:05

Devsined


2 Answers

If your view derives from ApiController, you should be able to call the Created method from base class to create such a response.

Sample:

[Route("")]
public async Task<IHttpActionResult> PostView(Guid taskId, [FromBody]View view)
{
    // ... Code here to save the view

    return Created(new Uri(Url.Link(ViewRouteName, new { taskId = taskId, id = view.Id })), view);
}
like image 133
Gildor Avatar answered Sep 23 '22 06:09

Gildor


In ASP.NET Core, an IActionResult can be returned. This means you can return a ObjectResult with a 201 status code.

[HttpPost]
public async Task<IActionResult> PostAsync([FromBody] CreateModel createModel)
{
    // Create domain entity and persist
    var entity = await _service.Create(createModel);

    // Return 201
    return new ObjectResult(entity) { StatusCode = StatusCodes.Status201Created };
}
like image 30
chris31389 Avatar answered Sep 25 '22 06:09

chris31389