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

71 lines
1.5 KiB
Markdown

# E-Commerce Example: HTTP API
Expose commands and queries via HTTP endpoints.
## HTTP Endpoint Setup
```csharp
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
```bash
POST /api/command/placeOrder
Content-Type: application/json
{
"customerId": "customer-123",
"lines": [
{
"productId": "product-456",
"quantity": 2
}
],
"shippingAddress": "123 Main St"
}
```
### Get Order
```bash
GET /api/query/getOrder?orderId=order-789
```
### List Orders
```bash
GET /api/query/listOrders?customerId=customer-123&status=Placed&page=1&pageSize=20
```
## See Also
- [08-grpc-api.md](08-grpc-api.md) - gRPC API
- [HTTP Integration](../../http-integration/README.md)