71 lines
1.5 KiB
Markdown
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)
|