Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 599 600 601 602 603 604 605 606 607 ... 642

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)

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

{

  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();

  }

1 ... 599 600 601 602 603 604 605 606 607 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий