Todo REST API samples using ASP.NET Core minimal APIs. It showcases:
- Using EntityFramework and SQLite for data access
- JWT authentication
- User management with ASP.NET Core Identity
- OpenAPI support
- Rate Limiting
- Writing tests for your REST API
- Install the dotnet-ef tool:
dotnet tool install dotnet-ef -g
- Navigate to the TodoApi folder and run
dotnet ef database update
to create the database. - Learn more about dotnet-ef
- Run
dotnet user-jwts create
to create a JWT token for your user anddotnet user-jwts create -n admin --role admin
to create an admin user. - Run the application and create a user by hitting POSTing a request with a matching user name to the name used to create your token.
- You should be able to use these tokens to make authenticated requests to the endpoint.
- Learn more about user-jwts
TodoApi uses OpenTelemetry to collect logs, metrics and spans.
If you wish to view the collected telemetry, follow the steps below.
- Run Prometheus with Docker:
docker run -d -p 9090:9090 --name prometheus -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
- Open Prometheus in your browser
- Query the collected metrics
- Uncomment
.AddOtlpExporter
belowbuilder.Services.AddOpenTelemetryTracing
, in theTodoApi/OpenTelemetryExtensions.cs
file - Run Jaeger with Docker:
docker run -d --name jaeger -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 -e COLLECTOR_OTLP_ENABLED=true -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 4317:4317 -p 4318:4318 -p 14250:14250 -p 14268:14268 -p 14269:14269 -p 9411:9411 jaegertracing/all-in-one:latest
- Open Jaeger in your browser
- View the collected spans
- Uncomment
.AddOtlpExporter
belowbuilder.Logging.AddOpenTelemetry
, in theTodoApi/Extensions/OpenTelemetryExtensions.cs
file - Find a Vendor that supports OpenTelemetry-based logging.
Vendor support for OpenTelemetry-based logging is currently very limited.