我的产品实体有两个DTO: ProductGetDto 和 ProductCreateDto 。
ProductGetDto 包含 Id ,名称, IsActive , CreatedBy , CreationDate , ModifiedBy 和 ModificationDate 属性。
ProductCreateDto 包含名称, IsActive 和 CreatedBy 属性。
我在ProductController(Web API 2控制器)中使用以下代码:
[ResponseType(typeof(ProductGetDto))]
public IHttpActionResult PostProduct(ProductCreateDto productCreateDto)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
ProductCreate productCreate = Mapper.Map<ProductCreate>(productCreateDto);
Guid productId = productManager.Create(productCreate);
ProductGet productGet = productManager.GetById(productId);
ProductGetDto productGetDto = Mapper.Map<ProductGetDto>(productGet);
return CreatedAtRoute("DefaultApi", new { id = productGetDto.Id }, productGetDto);
}
我不知道这是否正确。
我可以在CreatedAtRoute方法中使用 ProductCreateDto 模型吗?这可能是准确的方法吗?我不想再次打电话给 productManager.GetById(productId)。 ProductGetDto 包含所有属性,但 ProductCreateDto 没有。
GetProducts()和 GetProduct(id)方法,其中ProductController返回 ProductGetDto 。如果我在 PostProduct(ProductCreateDto productCreateDto)中返回 ProductCreateDto ,这是错误的吗?
我很抱歉我的英语不好。
答案 0 :(得分:0)
为什么不为此API端点使用单一模型:Product(Dto)?它可以很容易地与ProductGetDto相同,因为它包含ProductCreateDto也需要的所有字段。
否则它看起来很好。