Обработка ошибок в JSON Патч и частичное обновление DTO - PullRequest
0 голосов
/ 07 января 2020

У меня есть эта модель, которая ссылается на информацию о версии приложения:

  public class AppInfo
  {
    [Required(ErrorMessage = "Campo obrigatório")]
    public string nick { get; set; }
    [Required(ErrorMessage = "Campo obrigatório")]
    public string version { get; set; }
    public string description { get; set; }
    public bool invalidated { get; set; }
    public System.DateTime releasedAt { get; set; }
    public System.DateTime createdAt { get; set; }
    public System.DateTime updatedAt { get; set; }
  }

, и мне нужно сделать патч API, чтобы при необходимости обновлять только три из этих полей в базе данных:

  • недействительно
  • releaseAt
  • description

и других полей, которые мне нужно заблокировать, когда кто-то пытается изменить его, вызывая исключение.

Мой контроллер:

    public async Task<IActionResult> PatchAppVersion(string appNick, string appVersion, [FromBody]JsonPatchDocument<AppInfo> appInfoPatch)
    {
      try
      {

        AppInfo appInfo = await _getAppInfoByNickAndVersionBll.GetAppInfoByNickAndVersion(appNick, appVersion);

        if (!(appInfo is AppInfo))
        {
          return new NotFoundObjectResult("Não foi possível localizar informações de aplicativo e versões informadas");
        }

        AppInfo mappedAppInfo = _mapper.Map<AppInfo>(appInfo);
        appInfoPatch.ApplyTo(mappedAppInfo, ModelState);

        if (!ModelState.IsValid)
        {
          return new BadRequestObjectResult(ModelState);
        }

        _mapper.Map(mappedAppInfo, appInfo);
        _patchAppInfoBll.PatchAppInfoByNickAndVersion(mappedAppInfo);
        return new OkObjectResult(mappedAppInfo);
      }
      catch (Exception ex)
      {
        return StatusCode(500, ex.Message);
      }
    }

, и если кто-то знает, как обрабатывать возможные ошибки в запросе на исправление, будет хорошо :)

OBS: я использую Microsoft.AspNetCore.JsonPatch lib

...