return CreatedAtAction(nameof(GetOne), new {id = entity.Id}, entity);
}
Метод начинается с определения маршрута как запроса HttpPost
CreatedAtAction(), который возвращает клиенту код 201 вместе с URL для вновь созданной сущности в виде значения заголовка Location. Вновь созданная сущность в формате JSON помещается внутрь тела ответа.Метод DeleteOne()
Удаление записи делается с применением HTTP-метода DELETE
DeleteOne():///
/// Deletes a single record
///
///
/// Sample body:
///
/// {
/// "Id": 1,
/// "TimeStamp": "AAAAAAAAB+E="
/// }
///
///
///
///
///
[Produces("application/json")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[SwaggerResponse(200, "The execution was successful")]
[SwaggerResponse(400, "The request was invalid")]
[HttpDelete("{id}")]
public ActionResult
{
if (id != entity.Id)
{
return BadRequest();
}
try
{
MainRepo.Delete(entity);
}
catch (Exception ex)
{
// Должно обрабатываться более элегантно.
return new BadRequestObjectResult(ex.GetBaseException()?.Message);
}
return Ok();
}
Метод начинается с определения маршрута как запроса HttpDelete
id. Значение id в маршруте сравнивается со значением id, отправленным с остальной частью сущности в теле запроса, и если они не совпадают, то возвращается код 400 (Bad Request). Если хранилище успешно удаляет запись, тогда клиенту возвращается код 200 (ОК), а если возникла какая-то ошибка, то клиент получает код 400 (Bad Request).На этом создание базового контроллера завершено.
Класс CarsController
Приложению AutoLot.Api
HttpGet для получения записей Car на основе значения Make. Он будет создан в новом классе по имени CarsController. Создайте в каталоге Controllers новый пустой контроллер API под названием CarsController. Модифицируйте операторы using следующим образом:using System.Collections.Generic;
using AutoLot.Api.Controllers.Base;
using Microsoft.AspNetCore.Mvc;
using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Interfaces;
using AutoLot.Services.Logging;
using Microsoft.AspNetCore.Http;
using Swashbuckle.AspNetCore.Annotations;
Класс CarsController
BaseCrudController и определяет маршрут на уровне контроллера. Конструктор принимает специфичное для сущности хранилище и средство ведения журнала. Вот первоначальный код контроллера:namespace AutoLot.Api.Controllers
{
[Route("api/[controller]")]
public class CarsController : BaseCrudController
{
public CarsController(ICarRepo carRepo, IAppLogging
base(carRepo, logger)
{
}
}
}
Класс CarsController
///
/// Gets all cars by make
///
///
/// Primary key of the make
///
[Produces("application/json")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[SwaggerResponse(200, "The execution was successful")]