Чтение онлайн

на главную

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

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

[HttpPut("{id}")]

public IActionResult UpdateOne(int id,T entity)

{

if (id != entity.Id)

{

return BadRequest;

}

try

{

MainRepo.Update(entity);

}

catch (CustomException ex)

{

//
Пример специального исключения.

// Должно обрабатываться более элегантно.

return BadRequest(ex);

}

catch (Exception ex)

{

// Должно обрабатываться более элегантно.

return BadRequest(ex);

}

return Ok(entity);

}

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

HttpPut
на основе маршрута производного контроллера с обязательным параметром маршрута
id
. Значение маршрута присваивается параметру
id
(неявно из
[FromRoute]
), а сущность (
entity
) извлекается из тела запроса (неявно из
[FromBody]
).Также обратите внимание, что проверка достоверности модели отсутствует, поскольку делается автоматически атрибутом
ApiController
. Если состояние модели укажет на наличие ошибок, тогда клиенту будет возвращен код 400 (Bad Request).

Метод проверяет, совпадает ли значение маршрута (

id
) со значением
id
в теле запроса. Если не совпадает, то возвращается код 400 (Bad Request). Если совпадает, тогда используется хранилище для обновления записи. Если обновление терпит неудачу с генерацией исключения, то клиенту возвращается код 400 (Bad Request). Если операция обновления проходит успешно, тогда клиенту возвращается код 200 (ОК) и обновленная запись в качестве тела запроса.

На заметку! Обработка исключений в этом примере (а также в остальных примерах) абсолютно неадекватна. В производственных приложениях вы должны задействовать все знания, полученные к настоящему времени, чтобы элегантно обрабатывать возникающие проблемы в соответствии с имеющимися требованиями.

Метод AddOne

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

POST
. Ниже приведен код метода
AddOne
:

/// <summary>

/// Adds a single record

/// </summary>

/// <remarks>

/// Sample body:

/// <pre>

/// {

/// "Id": 1,

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

/// "MakeId": 1,

/// "Color": "Black",

/// "PetName": "Zippy",

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

/// }

/// </pre>

/// </remarks>

/// <returns>Added record</returns>

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

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

[Produces("application/json")]

[ProducesResponseType(StatusCodes.Status201Created)]

[ProducesResponseType(StatusCodes.Status400BadRequest)]

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

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

[HttpPost]

public ActionResult<T> AddOne(T entity)

{

try

{

MainRepo.Add(entity);

}

catch (Exception ex)

{

return BadRequest(ex);

}

return CreatedAtAction(nameof(GetOne), new {id = entity.Id}, entity);

}

Метод

начинается с определения маршрута как запроса
HttpPost
. Параметр маршрута отсутствует, потому что создается новая запись. Если хранилище успешно добавит запись, то ответом будет результат вызова метода
CreatedAtAction
, который возвращает клиенту код 201 вместе с URL для вновь созданной сущности в виде значения заголовка
Location
. Вновь созданная сущность в формате JSON помещается внутрь тела ответа.

Метод DeleteOne

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

DELETE
. Ниже приведен код метода
DeleteOne
:

/// <summary>

/// Deletes a single record

/// </summary>

/// <remarks>

/// Sample body:

/// <pre>

/// {

/// "Id": 1,

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

/// }

/// </pre>

/// </remarks>

/// <returns>Nothing</returns>

/// <response code="200">Found and deleted 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")]

[HttpDelete("{id}")]

public ActionResult<T> DeleteOne(int id, T entity)

{

if (id != entity.Id)

{

return BadRequest;

}

Поделиться:
Популярные книги

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Бремя империи

Афанасьев Александр
Бремя империи - 1.
Фантастика:
альтернативная история
9.34
рейтинг книги
Бремя империи

Кодекс Охотника. Книга XIX

Винокуров Юрий
19. Кодекс Охотника
Фантастика:
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XIX

Попытка возврата. Тетралогия

Конюшевский Владислав Николаевич
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Попытка возврата. Тетралогия

70 Рублей - 2. Здравствуй S-T-I-K-S

Кожевников Павел
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
70 Рублей - 2. Здравствуй S-T-I-K-S

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Повелитель механического легиона. Том III

Лисицин Евгений
3. Повелитель механического легиона
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том III

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Боги, пиво и дурак. Том 3

Горина Юлия Николаевна
3. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 3

Механический зверь. Маленький изобретатель

Розин Юрий
1. Легенда о Лазаре
Фантастика:
героическая фантастика
5.00
рейтинг книги
Механический зверь. Маленький изобретатель

Тринадцатый II

NikL
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый II

Законы Рода. Том 4

Flow Ascold
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4