OData WebAPI-使用XML的PATCH

时间:2019-06-07 20:05:04

标签: c# asp.net-mvc asp.net-web-api odata

我正在调整我的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>

0 个答案:

没有答案