Вот логика проверки, которую я хочу получить:
< ol>
[*]Если условие 1 истинно, вернуть код состояния HTTP 203.
[*]Если условие 1 ложно, проверьте условие 3:
[*] Если условие 3 истинно, вернуть код состояния HTTP 200.
[*]В противном случае верните код состояния HTTP 500.
Вот соответствующий код:
Обработчик команд
Код: Выделить всё
public sealed class InsertCommandHandler : IRequestHandler
{
private readonly IRepo _repo;
public InsertCommandHandler(IRepo repo)
{
_repo= repo?? throw new ArgumentNullException(nameof(repo));
}
public async Task Handle(InsertCommandrequest, CancellationToken cancellationToken)
{
var IsItemExistsOrError = await repo
.IsItemExistsAsync(...., cancellationToken).ConfigureAwait(false);
// Unsure whether to return description or code
if (IsItemExistsOrError is { IsError: false, Value: false }) return Error.Validation(description: @$"....")
if (IsItemExistsOrError .IsError) return IsItemExistsOrError .Errors;
return await _repo.InsertItemAsync(....).ConfigureAwait(false);
}
}
Код: Выделить всё
Task InsertItemAsync();
Код: Выделить всё
[HttpPost("...")]
public async Task InsertItemAsync(Request request)
{
var command = new InsertItemCommand(... );
var result = await Mediator.Send(command);
if (result.IsError)
{
// TODO : i don't know if it's better to check with description or the code ?
if (result.IsError)
{
if (result.FirstError.Code.Equals("203")) return Results.StatusCode(203);
return Results.BadRequest();
}
if (!result.Value) return Results.BadRequest();
return Results.Ok();
}
- Лучше ли использовать Error.Validation(description: ...) или Error. Проверка (код: ...) для возврата ошибок в таком сценарии?
- При обработке ошибки в веб-API следует ли мне проверять код или описание, чтобы принять решение по HTTP-ответу ?
Подробнее здесь: https://stackoverflow.com/questions/792 ... lidation-f