Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Random Word API

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.

Özellikler

  • 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

Teknolojiler

  • ASP.NET Core Web API
  • .NET 10
  • Entity Framework Core
  • SQLite
  • JWT Bearer Authentication
  • BCrypt.Net-Next
  • Swagger / Swashbuckle

Kurulum

Önce bağımlılıkları geri yükleyin:

dotnet restore

Veritabanını migrationlardan oluşturun:

dotnet ef database update --project randomwordAPI/RandomWordAPI

dotnet ef komutu bulunamazsa EF CLI aracını kurun:

dotnet tool install --global dotnet-ef

Projeyi çalıştırın:

dotnet run --project randomwordAPI/RandomWordAPI

Swagger arayüzü:

http://localhost:5083/swagger

Kimlik Doğrulama Akışı

  1. POST /api/auth/register ile kullanıcı oluşturulur.
  2. POST /api/auth/login ile access token ve refresh token alınır.
  3. Swagger'da Authorize alanına access token girilir.
  4. api/words endpointleri Bearer token ile çağrılır.
  5. Access token süresi dolduğunda POST /api/auth/refresh ile yeni token çifti alınır.
  6. POST /api/auth/revoke ile aktif refresh token iptal edilir.

Swagger Authorize alanına sadece token değeri girilmelidir; Bearer öneki Swagger tarafından eklenir.

Endpointler

Auth

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.

Words

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.

Örnek İstekler

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"
}

Proje Notları

  • Data/words.db yerel geliştirme veritabanıdır ve Git'e dahil edilmez.
  • Veritabanı şeması EF Core migrationları ile oluşturulur.
  • appsettings.json iç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.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages