dotnet-cqrs/docs/tutorials/ecommerce-example/07-http-api.md

1.5 KiB

E-Commerce Example: HTTP API

Expose commands and queries via HTTP endpoints.

HTTP Endpoint Setup

var builder = WebApplication.CreateBuilder(args);

// Register CQRS
builder.Services.AddSvrntyCQRS();
builder.Services.AddDefaultCommandDiscovery();
builder.Services.AddDefaultQueryDiscovery();

// Register commands and queries
builder.Services.AddCommand<PlaceOrderCommand, string, PlaceOrderCommandHandler>();
builder.Services.AddCommand<CancelOrderCommand, CancelOrderCommandHandler>();
builder.Services.AddQuery<GetOrderQuery, OrderDto, GetOrderQueryHandler>();
builder.Services.AddQuery<ListOrdersQuery, PagedResult<OrderSummaryDto>, ListOrdersQueryHandler>();

// Add Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Map HTTP endpoints
app.MapSvrntyCommands();
app.MapSvrntyQueries();

// Enable Swagger
app.UseSwagger();
app.UseSwaggerUI();

app.Run();

API Endpoints

Place Order

POST /api/command/placeOrder
Content-Type: application/json

{
  "customerId": "customer-123",
  "lines": [
    {
      "productId": "product-456",
      "quantity": 2
    }
  ],
  "shippingAddress": "123 Main St"
}

Get Order

GET /api/query/getOrder?orderId=order-789

List Orders

GET /api/query/listOrders?customerId=customer-123&status=Placed&page=1&pageSize=20

See Also