我正在调整我的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。
编辑
在PATCH端点中接受的JSON对象:
{
"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>