Литмир - Электронная Библиотека
A
A

protected readonly IRepo<T> MainRepo;

protected readonly IAppLogging<TController> Logger;

protected BaseCrudController(IRepo<T> repo, IAppLogging<TController> logger)

{

  MainRepo = repo;

  Logger = logger;

}

Методы GetXXX()

Есть два HTTP-метода

GET
,
GetOne()
и
GetAll()
. Оба они используют хранилище, переданное контроллеру. Первым делом добавьте метод
Getll()
, который служит в качестве конечной точки для шаблона маршрута контроллера:

/// <summary>

/// Gets all records

/// </summary>

/// <returns>All records</returns>

/// <response code="200">Returns all items</response>

[Produces("application/json")]

[ProducesResponseType(StatusCodes.Status200OK)]

[SwaggerResponse(200, "The execution was successful")]

[SwaggerResponse(400, "The request was invalid")]

[HttpGet]

public ActionResult<IEnumerable<T>> GetAll()

{

  return Ok(MainRepo.GetAllIgnoreQueryFilters());

}

Следующий метод получает одиночную запись на основе параметра

id
, который передается как обязательный параметр маршрута и добавляется к маршруту производного контроллера:

/// <summary>

/// Gets a single record

/// </summary>

/// <param name="id">Primary key of the record</param>

/// <returns>Single record</returns>

/// <response code="200">Found the record</response>

/// <response code="204">No content</response>

[Produces("application/json")]

[ProducesResponseType(StatusCodes.Status200OK)]

[ProducesResponseType(StatusCodes.Status204NoContent)]

[SwaggerResponse(200, "The execution was successful")]

[SwaggerResponse(204, "No content")]

[HttpGet("{id}")]

public ActionResult<T> GetOne(int id)

{

  var entity = MainRepo.Find(id);

  if (entity == null)

  {

    return NotFound();

  }

  return Ok(entity);

}

Значение маршрута автоматически присваивается параметру

id
(неявно из
[FromRoute]
).

Метод UpdateOne()

Обновление записи делается с применением HTTP-метода

PUT
. Ниже приведен код метода
UpdateOne()
:

/// <summary>

/// Updates a single record

/// </summary>

/// <remarks>

/// Sample body:

/// <pre>

/// {

///   "Id": 1,

///   "TimeStamp": "AAAAAAAAB+E="

///   "MakeId": 1,

///   "Color": "Black",

///   "PetName": "Zippy",

///   "MakeColor": "VW (Black)",

/// }

/// </pre>

/// </remarks>

/// <param name="id">Primary key of the record to update</param>

/// <returns>Single record</returns>

/// <response code="200">Found and updated the record</response>

/// <response code="400">Bad request</response>

[Produces("application/json")]

[ProducesResponseType(StatusCodes.Status200OK)]

[ProducesResponseType(StatusCodes.Status400BadRequest)]

[SwaggerResponse(200, "The execution was successful")]

[SwaggerResponse(400, "The request was invalid")]

[HttpPut("{id}")]

public IActionResult UpdateOne(int id,T entity)

{

  if (id != entity.Id)

  {

    return BadRequest();

  }

603
{"b":"847442","o":1}