Я адаптирую свой API для работы с JSON и XML, но я замечаю, что конечная точка PATCH не получает объект в качестве параметра, когда я отправляю его как XML (работает отлично, когда я отправляю как JSON), он выглядит какнулевой объект.
Есть метод PATCH:
public IHttpActionResult Patch([FromBody]Delta<CargoDTO> deltaDto)
{
if (sandbox)
{
//var cargosMock = (List<CargoApiDTO>)new CargosExemplos().GetExamples();
var cargoEdit = cargosMock.Where(x => x.Codigo == deltaDto.GetInstance().Codigo).FirstOrDefault();
if (cargosMock == null)
return NotFound();
deltaDto.Patch(cargoEdit);
var indx = cargosMock.IndexOf(cargoEdit);
cargosMock.RemoveAt(indx);
cargosMock.Add(cargoEdit);
return Ok(cargoEdit);
}
_nexoControle.Cliente = Request.GetOwinContext().Get<string>("client_id");
var codigo = deltaDto.GetInstance().Codigo;
var dto = _nexoControle.ObterColecao().AsQueryable()
.Where(cargo => cargo.Codigo == codigo)
.ProjectTo<CargoDTO>()
.FirstOrDefault();
if (dto == null)
return NotFound();
deltaDto.Patch(dto);
var obj = AutoMapper.Mapper.Map<Cargo>(dto);
//_nexoControle.Atualizar(obj);
return Ok(dto);
}
Есть маршрут: builder.EntitySet<CargoDTO>("Cargo").EntityType.HasKey(dto => dto.Codigo);
Прежде чем кто-то спросит, клиент хочет работать с XML и JSON.
EDIT
Объект JSON, принятый в конечной точке PATCH:
{
"Codigo": "Auxiliar Adm",
"Nome": "Auxiliar Administrativo",
"Periodicidade": null,
"CBO": "000001",
"Identificador": "101012",
"Ativo": true,
"CodigoTipoAtividadeProfissional": "01"
}
Объект XML, который имеет нулевое значение в конечной точке:
<?xml version="1.0"?>
<CargoDTO>
<Codigo>cargoteste</Codigo>
<Nome>Cargo Teste</Nome>
<Periodicidade>aa</Periodicidade>
<CBO>aa</CBO>
<Identificador>AA01</Identificador>
<Ativo>true</Ativo>
<CodigoTipoAtividadeProfissional>AA01</CodigoTipoAtividadeProfissional>
</CargoDTO>