Я хотел бы вернуть URI местоположения вновь созданного ресурса в ASP.NET Core 2.2.Вот способ получить продукт питания для поставщика продуктов питания:
[HttpGet("{foodVendorId}/foodItems/{foodItemId}", Name = "GetFoodItem")]
public IActionResult GetFoodVendorFoodItem(int foodVendorId, int foodItemId)
{
if (!_foodDeliveryAPIRepository.FoodVendorExists(foodVendorId))
{
return NotFound();
}
var foodItem = _foodDeliveryAPIRepository.GetFoodItemForFoodVendor(foodVendorId, foodItemId);
if (foodItem == null)
{
return NotFound();
}
var foodItemResult = Mapper.Map<FoodItemDto>(foodItem);
return Ok(foodItemResult);
}
А вот метод добавления или создания продукта питания для поставщика продуктов питания:
[HttpPost("{foodVendorId}/foodItems")]
public IActionResult CreateFoodItem(int foodVendorId, [FromBody] FoodItemForCreationDto foodItem)
{
if (foodItem == null)
{
return BadRequest();
}
if (!_foodDeliveryAPIRepository.FoodVendorExists(foodVendorId))
{
return NotFound();
}
var finalFoodItem = Mapper.Map<Entities.FoodItem>(foodItem);
_foodDeliveryAPIRepository.AddFoodItemForFoodVendor(foodVendorId, finalFoodItem);
if (!_foodDeliveryAPIRepository.Save())
{
return StatusCode(500, "A problem happened while handling your request.");
}
var createdFoodItemToReturn = Mapper.Map<Models.FoodItemDto>(finalFoodItem);
return CreatedAtRoute("GetFoodItem", new
{ foodVendorId = foodVendorId, id = createdFoodItemToReturn.Id }, createdFoodItemToReturn);
}
создавая FoodItem, значения попадают в базу данных, но после создания возвращают ошибку сервера 500.После отладки я понимаю, что ошибка в операторе возврата CreatedAtRoute -
return CreatedAtRoute("GetFoodItem", new
{ foodVendorId = foodVendorId, id = createdFoodItemToReturn.Id }, createdFoodItemToReturn);
Что я делаю не так?- Это не решило мою проблему.