Bu proje, kullanıcıların görev (task) oluşturabildiği, görevleri listeleyebildiği, güncelleyebildiği ve silebildiği basit bir görev yönetim sistemidir. API, temel CRUD operasyonlarını sağlamakta, JWT ile kimlik doğrulaması kullanmakta ve temiz, anlaşılır bir katmanlı mimariye (Controller-Service-Repository) sahiptir.
- Dil ve Çerçeve: C# (.NET 8) & ASP.NET Core Web API
- ORM: Entity Framework Core
- Veritabanı: SQL Server
- Kimlik Doğrulama: JWT (JSON Web Token)
- API Belgelendirme: Swagger (Swashbuckle)
- Kullanıcı Kimlik Doğrulama: JWT tabanlı güvenli kullanıcı girişi ve kaydı.
- Görev Yönetimi: Kullanıcılara özel görev oluşturma, listeleme, güncelleme ve silme.
- Kullanıcıya Özel Erişim: Her kullanıcı yalnızca kendi oluşturduğu görevleri görüntüleyebilir ve yönetebilir.
- RESTful Uç Noktalar: API, RESTful prensiplere uygun olarak tasarlanmıştır.
- Katmanlı Mimari: Sorumlulukların Controller, Service ve Repository katmanları arasında ayrılmasıyla temiz ve sürdürülebilir kod yapısı.
Projeyi lokalinizde çalıştırabilmek için aşağıdaki adımları takip edin:
- .NET SDK 8.0 veya üstü
- SQL Server (SQL Server Express sürümü yeterlidir)
- (İsteğe Bağlı) SQL Server Management Studio (SSMS) veya benzeri bir veritabanı yönetim aracı.
-
Projeyi Klonlayın:
git clone <proje-depo-url>
-
Veritabanı Bağlantı Dizgesini Ayarlayın:
appsettings.json
dosyasını açın."ConnectionStrings"
altındaki"DefaultConnection"
değerini kendi yerel SQL Server kurulumunuza göre güncelleyin.Data Source=
kısmına kendi SQL Server sunucu adınızı yazın (örneğin:(localdb)\\MSSQLLocalDB
veyalocalhost\\SQLEXPRESS
).Initial Catalog=TaskManagementDb;
kısmındakiTaskManagementDb
veritabanı adıdır, dilerseniz değiştirebilirsiniz.
// appsettings.json örneği { "ConnectionStrings": { "DefaultConnection": "Data Source=YOUR_SERVER_NAME;Initial Catalog=TaskManagementDb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" }, // ... }
-
Veritabanı Migrasyonlarını Uygulayın:
- api klasörünün kök dizininde bir terminal veya komut istemcisi açın.
- Aşağıdaki komutu çalıştırarak veritabanını oluşturun ve migrasyonları uygulayın:
Bu komut, veritabanını oluşturacak ve (
dotnet ef database update
ApplicationDBContext.cs
içindekiOnModelCreating
ile) "Admin" ve "User" rollerini ekleyecektir.
-
Projeyi Çalıştırın:
- Proje başarıyla başladığında, API'ye erişim portunu (
https://localhost:<port>
) terminalde göreceksiniz.
- Proje başarıyla başladığında, API'ye erişim portunu (
Proje çalıştığında, API endpoint'lerini test etmek için otomatik olarak oluşturulan Swagger UI'a erişebilirsiniz:
- Tarayıcınızda şu adresi açın:
https://localhost:<API_PORT>/swagger
(Örneğin:https://localhost:5001/swagger
)
-
Kullanıcı Kaydı (
/api/account/register
- POST):- Swagger UI'da
Account
bölümünü genişletin. /api/account/register
POST endpoint'ini bulun ve "Try it out" butonuna tıklayın.username
,email
vepassword
bilgilerini içeren bir istek gövdesi girin (örn:{"userName": "testuser", "email": "test@example.com", "password": "Password123!"}
).- "Execute" butonuna tıklayın. Başarılı bir yanıtta, bir JWT
token
alacaksınız. Bu token'ı kopyalayın.
- Swagger UI'da
-
**Giriş (
/api/account/login
- POST) -- Eğer zaten kayıtlı bir kullanıcınız varsa veya token süresi dolmuşsa, bu endpoint ile giriş yapıp yeni bir token alabilirsiniz.
- Kayıt olduğunuz
username
vepassword
ile giriş yapın ve yenitoken
'ı kopyalayın.
-
API'ye Yetkilendirme (Swagger UI):
- Swagger UI'ın sağ üst tarafındaki "Authorize" butonuna tıklayın.
- Açılan pencerede
Bearer
seçeneğini seçin. Value
alanına, kopyaladığınız JWT token'ıBearer
önekiyle birlikte yapıştırın (örnek:Bearer eyJhbGciOi...
).- "Authorize" butonuna tıklayın ve ardından pencereyi kapatın.
-
Görev Oluşturma (
/api/task
- POST):- Swagger UI'da
Task
bölümünü genişletin. /api/task
POST endpoint'ini bulun ve "Try it out" butonuna tıklayın.title
,description
,isCompleted
vedueDate
bilgilerini içeren bir istek gövdesi girin.- "Execute" butonuna tıklayın. Başarılı bir yanıt (200 OK) ile yeni oluşturulan görevin DTO'sunu göreceksiniz.
- Swagger UI'da
-
Görevleri Listeleme (
/api/task
- GET):/api/task
GET endpoint'ini bulun.- "Try it out" ve "Execute" butonlarına tıklayarak mevcut kullanıcının tüm görevlerini listeleyebilirsiniz. (İsteğe bağlı olarak
title
,sortBy
gibi sorgu parametrelerini kullanabilirsiniz.)
-
Görev Güncelleme, Silme ve Detay Görüntüleme:
- Diğer
TasksController
endpoint'lerini (GET /{id}
,PUT /{id}
,DELETE /{id}
) kullanarak görevleri ID'ye göre görüntüleyebilir, güncelleyebilir veya silebilirsiniz. Unutmayın, sadece kendi görevlerinizi yönetebilirsiniz.
- Diğer