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
-
To create a new user, run the application and POST a JSON payload to
/users
endpoint:{ "username": "myuser", "password": "<put a password here>" }
-
To get a token for the above user run
dotnet user-jwts
to create a JWT token with the same user name specified above e.g:dotnet user-jwts create -n myuser
-
You should be able to use this token to make authenticated requests to the todo endpoints.
-
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.