Random Word API, kullanıcıların İngilizce-Türkçe kelime çiftlerini kaydedip yönetebildiği, JWT access token ve refresh token tabanlı kimlik doğrulama kullanan bir ASP.NET Core Web API projesidir.
- Kullanıcı kayıt, giriş, token yenileme ve refresh token iptal etme akışı
- JWT access token ile korunan endpointler
- Refresh token değerlerinin veritabanında hash olarak saklanması
- BCrypt ile parola hashleme
- Kullanıcıların yalnızca kendi kelimelerine erişebilmesi
- DTO tabanlı request/response modelleri
- EF Core + SQLite ile veri kalıcılığı
- Swagger UI üzerinde JWT Bearer desteği
- ASP.NET Core Web API
- .NET 10
- Entity Framework Core
- SQLite
- JWT Bearer Authentication
- BCrypt.Net-Next
- Swagger / Swashbuckle
Önce bağımlılıkları geri yükleyin:
dotnet restoreVeritabanını migrationlardan oluşturun:
dotnet ef database update --project randomwordAPI/RandomWordAPIdotnet ef komutu bulunamazsa EF CLI aracını kurun:
dotnet tool install --global dotnet-efProjeyi çalıştırın:
dotnet run --project randomwordAPI/RandomWordAPISwagger arayüzü:
http://localhost:5083/swagger
POST /api/auth/registerile kullanıcı oluşturulur.POST /api/auth/loginile access token ve refresh token alınır.- Swagger'da
Authorizealanına access token girilir. api/wordsendpointleri Bearer token ile çağrılır.- Access token süresi dolduğunda
POST /api/auth/refreshile yeni token çifti alınır. POST /api/auth/revokeile aktif refresh token iptal edilir.
Swagger Authorize alanına sadece token değeri girilmelidir; Bearer öneki Swagger tarafından eklenir.
| Metot | Endpoint | Açıklama |
|---|---|---|
| POST | /api/auth/register |
Yeni kullanıcı oluşturur ve token döner. |
| POST | /api/auth/login |
Kullanıcı girişi yapar ve token döner. |
| POST | /api/auth/refresh |
Refresh token ile yeni access token ve refresh token üretir. |
| POST | /api/auth/revoke |
Giriş yapmış kullanıcının refresh tokenını iptal eder. |
Tüm Words endpointleri JWT gerektirir.
| Metot | Endpoint | Açıklama |
|---|---|---|
| GET | /api/words |
Kullanıcının tüm kelimelerini listeler. |
| GET | /api/words/random |
Kullanıcının kelimelerinden rastgele bir tane döner. |
| GET | /api/words/{id} |
Kullanıcıya ait belirli bir kelimeyi getirir. |
| POST | /api/words |
Yeni kelime ekler. |
| PUT | /api/words/{id} |
Kullanıcıya ait kelimeyi günceller. |
| DELETE | /api/words/{id} |
Kullanıcıya ait kelimeyi siler. |
Kayıt:
{
"username": "demoUser",
"password": "StrongPassword123"
}Kelime ekleme:
{
"english": "apple",
"turkish": "elma",
"image": "https://example.com/apple.png"
}Refresh token yenileme:
{
"refreshToken": "refresh-token-value"
}Data/words.dbyerel geliştirme veritabanıdır ve Git'e dahil edilmez.- Veritabanı şeması EF Core migrationları ile oluşturulur.
appsettings.jsoniçindeki JWT anahtarı geliştirme amaçlıdır; gerçek ortamda user-secrets, environment variable veya güvenli secret yönetimi kullanılmalıdır.