如何在Angular客户端中为cqrs模式API创建Crud模型?

我在CQRS Pattent的ASP.net核心中实现Web API,并使用mediatR library 我有单独的模型,例如CreatePartyCommand,UpadatePartyCommand,DeletePartyCommand,PartyViewModel,PartyQuery

public class CreatePartyCommand : IRequest<int>
{
    public string Name { get; set; }

    public string Family { get; set; }

    public long Code { get; set; }

    public string Title { get; set; }
}

public class UpdatePartyCommand : IRequest<int>
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Family { get; set; }

    public long Code { get; set; }

    public string Title { get; set; }

}

public class DeletePartyCommand : IRequest
{
    public int Id { get; set; }
}

[Route("api/[controller]")]
[ApiController]
public class PartyController : ControllerBase
{
    private readonly IMediator _mediator;

    public PartyController(IMediator mediator)
    {
        _mediator = mediator;
    }

    [HttpGet]
    public async Task<actionResult<IEnumerable<PartyViewModel>>> Get([FromQuery] PartyQuery partyQuery)
    {
        return Ok(await _mediator.Send(partyQuery));
    }

    [HttpPost]
    public async Task<actionResult<int>> Create([FromBody] CreatePartyCommand command)
    {
        var productId = await _mediator.Send(command);

        return Ok(productId);
    }

    [HttpPut]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesDefaultResponseType]
    public async Task<IactionResult> Update([FromBody] UpdatePartyCommand command)
    {
        await _mediator.Send(command);

        return NoContent();
    }

    [HttpDelete("{id}")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesDefaultResponseType]
    public async Task<IactionResult> Delete(int id)
    {
        await _mediator.Send(new DeletePartyCommand { Id = id });

        return NoContent();
    }
}

在客户端,我有一个用于Party List的组件,该组件用于对数据进行分页并绑定到PartyViewModel[],还有一个或两个(我不知道请指导我)用于添加和更新的组件

我应该如何在客户端设计DataModels或在服务器端进行哪些更改以完成CRUD方案?

routernsn 回答:如何在Angular客户端中为cqrs模式API创建Crud模型?

您只需要一个界面即可输入对象。

export interface IParty {
  Id?: number;
  Name: string;
  Family: string;
  Code: number;
  Title: string;
}

POST示例:

服务

create(party: IParty): Promise<IParty> {
  return this.http.post('link',party).toPromise();
}

组件

async createParty(party: IParty): Promise<void> {
  const party = await this.partyService.create(party); // if you use promise you should put this code in a try-catch block
}
本文链接:https://www.f2er.com/2790332.html

大家都在问