У меня есть эта модель, которая ссылается на информацию о версии приложения:
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