public async Task <IHttpActionResult> PostAsync(Item item) { if (!item.IsValidForCreating()) { return(BadRequest()); } var newItem = _itemCreator.SetItem(item); await _repository.AddAsync(newItem); var location = _urlGenerator.GetItemUrl(newItem.Id); return(Created(location, newItem)); }