- Notifications
You must be signed in to change notification settings - Fork1
CoreXCrud API Projesi, modern yazılım geliştirme tekniklerini kullanarak, kullanıcı yönetimi, ürün yönetimi ve sipariş yönetimi gibi işlevleri sunan bir API projesidir. Projede .NET Core, Entity Framework Core, AutoMapper, FluentValidation, AspNetCoreRateLimit ve JWT Authentication gibi teknolojiler kullanılmıştır.
License
ThecoderPinar/CoreXCrudAPI
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
CoreXCrud,modern, ölçeklenebilir ve güvenli birASP.NET Core Web API uygulamasıdır.CRUD işlemleri,JWT Authentication,Yetkilendirme,Rate Limiting,Serilog Loglama,Unit of Work & Repository Pattern,FluentValidation,AutoMapper,Mikroservis Mimarisine Uygun Yapı gibi modern yazılım geliştirme standartlarını içeren kapsamlı bir API geliştirme projesidir.
Bu proje,kurumsal seviyede API geliştirme süreçlerini kapsayanen iyi uygulamaları (best practices) içermektedir.Unit Testler ve Entegrasyon Testleri gibi birçok ileri düzey özellik içermektedir.
- ✅.NET 8 Web API kullanılarak geliştirilmiştir.
- ✅JWT Authentication ve Role-based Authorization desteği.
- ✅AutoMapper ile DTO kullanımı.
- ✅FluentValidation ile model doğrulama.
- ✅Serilog ile detaylı loglama (Dosya ve Konsol Destekli).
- ✅AspNetCoreRateLimit ile Rate Limiting (İstek Sınırlandırma).
- ✅Unit of Work & Repository Pattern ile veri yönetimi.
- ✅Mikroservis mimarisine uygun ölçeklenebilir yapı.
- ✅Swagger UI ile Test Edilebilir API Geliştirme.
- ✅RabbitMQ ile Event-Driven Mimarisi.
CoreXCrudSolution/│── CoreXCrud/# Ana API Projesi│ │── Controllers/# API Controller dosyaları│ │── Data/# Veritabanı bağlantısı ve DbContext│ │── DTOs/# Veri transfer objeleri (DTO)│ │── Models/# Entity modelleri│ │── Repositories/# Repository ve Unit of Work yapısı│ │── Services/# İş mantığı için servis katmanı│ │── Validators/# FluentValidation ile model doğrulama│ │── logs/# Serilog log dosyaları│ │── appsettings.json# Konfigürasyon ayarları│── CoreXCrud.UI/# Opsiyonel MVC UI Projesi (İptal Edildi)│── README.md# Proje dokümantasyonu
graph TD; Client(Kullanıcı) -->|İstek| API_Gateway API_Gateway -->|Doğrulama| Authentication_Service API_Gateway -->|İstek Yönlendirme| Products_Service API_Gateway -->|İstek Yönlendirme| Orders_Service API_Gateway -->|İstek Yönlendirme| Users_Service Authentication_Service -->|JWT Token| API_Gateway Products_Service -->|CRUD| Database Orders_Service -->|CRUD| Database Users_Service -->|CRUD| Database Database[(SQL Server, PostgreSQL, MongoDB)] subgraph Kullanıcı Yönetimi Users_Service end subgraph Ürün Yönetimi Products_Service --> Database[(Veritabanı)] end subgraph Sipariş Yönetimi Orders_Service --> Database[(Veritabanı)] end subgraph Kimlik Doğrulama Authentication_Service end
graph TD; User[End User] -->|Login| AuthService[Authentication Service] AuthService -->|Token Generation| Token[JWT Token] Token -->|Authorized Request| APIGateway[API Gateway] APIGateway -->|Routes to| ProductService[Product Service] APIGateway -->|Routes to| OrderService[Order Service] APIGateway -->|Routes to| UserService[User Service] ProductService -->|Fetches| ProductDB[(Product Database)] OrderService -->|Fetches| OrderDB[(Order Database)] UserService -->|Fetches| UserDB[(User Database)]
graph TD; DB[(Database)] -->|Contains| UsersTable[Users Table] DB -->|Contains| ProductsTable[Products Table] DB -->|Contains| OrdersTable[Orders Table] DB -->|Contains| OrderDetailsTable[Order Details Table] UsersTable -->|Primary Key| UserId[User ID] ProductsTable -->|Primary Key| ProductId[Product ID] OrdersTable -->|Foreign Key| UserId[User ID] OrdersTable -->|Primary Key| OrderId[Order ID] OrderDetailsTable -->|Foreign Key| OrderId[Order ID] OrderDetailsTable -->|Foreign Key| ProductId[Product ID] OrderDetailsTable -->|Primary Key| OrderDetailId[Order Detail ID]
graph TD; Client -->|Login Request| AuthService AuthService -->|Validates Credentials| UserStore[(User Store)] AuthService -->|Returns| JWTToken[JWT Token] Client -->|Attaches JWT| APIRequest[API Request] APIRequest -->|Validated by| APIGateway APIGateway -->|Sends Request| BackendServices[Backend Services]
graph TD; API_Gateway -->|Routes Requests| Auth_Service[Authentication Service] API_Gateway -->|Routes Requests| Product_Service[Product Service] API_Gateway -->|Routes Requests| Order_Service[Order Service] Auth_Service -->|Generates Tokens| Token_Storage[(Token Storage)] Product_Service -->|CRUD Operations| Product_Database[(Product Database)] Order_Service -->|CRUD Operations| Order_Database[(Order Database)] Product_Service -->|Validates Stock| Stock_Validation[(Stock Validation Service)]
Öncelikle gerekli NuGet paketlerini yüklemek için aşağıdaki komutu çalıştırın:
dotnet restore
Migration ve veritabanı güncellemesini şu komutlarla yapabilirsiniz:
dotnet ef migrations add InitialCreate dotnet ef database update
Aşağıdaki komutla API’yi çalıştırabilirsiniz:
dotnet run
Swagger UI’ye erişmek için:
https://localhost:7252/swagger
Not:
/api/Auth/login
haricindeki tüm uç noktalar JWT ile korunur. İsteklerinizdeAuthorization: Bearer {token}
başlığını göndermeniz gerekir.
Kullanıcı yönetimi API'si, sistemdeki kullanıcıları yönetmek için kullanılır.
HTTP Metodu
Uç Nokta
Açıklama
GET
/api/Users
📌 Tüm kullanıcıları getir
POST
/api/Users
➕ Yeni kullanıcı oluştur
GET
/api/Users/{id}
🔍 Belirli bir kullanıcıyı getir
PUT
/api/Users/{id}
✏️ Kullanıcıyı güncelle
DELETE
/api/Users/{id}
❌ Kullanıcıyı sil
Ürün yönetimi API'si, sistemdeki ürünleri yönetmek için kullanılır.
HTTP Metodu
Uç Nokta
Açıklama
GET
/api/Products
📌 Tüm ürünleri getir
POST
/api/Products
➕ Yeni ürün ekle
GET
/api/Products/{id}
🔍 Belirli bir ürünü getir
PUT
/api/Products/{id}
✏️ Ürünü güncelle
DELETE
/api/Products/{id}
❌ Ürünü sil
Sipariş yönetimi API'si, müşterilerin siparişlerini yönetmek için kullanılır.
HTTP Metodu
Uç Nokta
Açıklama
GET
/api/Orders
📌 Tüm siparişleri getir
POST
/api/Orders
➕ Yeni sipariş oluştur
GET
/api/Orders/{id}
🔍 Belirli bir siparişi getir
PUT
/api/Orders/{id}
✏️ Siparişi güncelle
DELETE
/api/Orders/{id}
❌ Siparişi sil
Sipariş detayları API'si, siparişlerin içeriğini yönetmek için kullanılır.
HTTP Metodu
Uç Nokta
Açıklama
GET
/api/OrderDetails
📌 Tüm sipariş detaylarını getir
POST
/api/OrderDetails
➕ Yeni sipariş detayı oluştur
GET
/api/OrderDetails/{id}
🔍 Belirli bir sipariş detayını getir
PUT
/api/OrderDetails/{id}
✏️ Sipariş detayını güncelle
DELETE
/api/OrderDetails/{id}
❌ Sipariş detayını sil
Kimlik doğrulama API'si, kullanıcı giriş işlemleri için kullanılır.
HTTP Metodu
Uç Nokta
Açıklama
POST
/api/Auth/login
🔐 Kullanıcı girişi yap ve JWT al
{"username":"admin","password":"password"}
- Swagger UI'yi açın (
https://localhost:7252/swagger
). - Önce
/api/Auth/login
endpointine kullanıcı adı ve şifre ile POST isteği gönderin. - DönenJWT Token'ı kopyalayın.
- Sağ üst köşede bulunan"Authorize" butonuna tıklayın.
- Açılan pencereye"Bearer {token}" formatında JWT'yi yapıştırın.
- Authorize butonuna basarak oturumu açın ve artık yetkilendirilmiş API çağrıları yapabilirsiniz. 🚀
API kullanımı sırasında oluşabilecek hata durumlarını ve döndürülebilecekHTTP status kodlarını aşağıda görebilirsiniz.
Status Kodu
Anlamı
400 Bad Request
❌ Geçersiz veya eksik parametre gönderildi.
401 Unauthorized
🔒 Yetkilendirme başarısız oldu veya token eksik.
403 Forbidden
🚫 Yetkiniz olmayan bir kaynağa erişmeye çalışıyorsunuz.
404 Not Found
🔍 İstenilen kaynak bulunamadı.
405 Method Not Allowed
⛔ Geçersiz HTTP metodu kullanıldı.
409 Conflict
415 Unsupported Media Type
📂 Geçersiz içerik türü (Örn:application/json
beklenirken farklı bir format gönderildi).
422 Unprocessable Entity
❌ Doğrulama hatası, girilen veriler uygun değil.
429 Too Many Requests
⏳ İstek sınırı aşıldı, çok fazla istek yapıldı.
500 Internal Server Error
🔥 Sunucu tarafında beklenmeyen bir hata oluştu.
503 Service Unavailable
🚧 Sunucu şu an hizmet veremiyor, daha sonra tekrar deneyin.
Status Kodu
Anlamı
401 Unauthorized
🔑 JWT token eksik veya geçersiz.
403 Forbidden
🔐 Yetkiniz olmayan bir işlemi gerçekleştirmeye çalışıyorsunuz.
419 Token Expired
⏳ JWT token süresi dolmuş. Yeni bir token ile giriş yapın.
Status Kodu
Anlamı
404 Not Found
🛒 Belirtilen ürün bulunamadı.
400 Bad Request
❌ Eksik veya hatalı ürün bilgisi gönderildi.
409 Conflict
Status Kodu
Anlamı
404 Not Found
📦 Belirtilen sipariş bulunamadı.
400 Bad Request
❌ Eksik sipariş bilgisi gönderildi.
422 Unprocessable Entity
❌ Sipariş içeriği doğrulama hatası aldı.
{"status":400,"error":"Bad Request","message":"Ürün adı boş olamaz."}
1️⃣Sipariş Filtreleme ve Raporlama (Tarih, Durum, Kullanıcı Bazlı Raporlar)
2️⃣Performans Optimizasyonu (Asenkron İşlemler, Caching)
3️⃣CI/CD Pipeline (GitHub Actions ile Otomatik Deployment)
4️⃣Event-Driven Mimari için Kafka Desteği 5️⃣Yük Dengeleme için Kubernetes Autoscaling
CoreXCrud,modern, güvenli ve ölçeklenebilir bir API olarak geliştirilmiştir..NET 8,JWT Authentication,FluentValidation,Serilog,AutoMapper gibi en güncel teknolojilerle desteklenmiştir.
🚀Her şey başarıyla tamamlandı, şimdi projenizi kullanmaya başlayabilirsiniz! 🔥
Bu projeMIT Lisansı kapsamında kullanıma sunulmuştur.
About
CoreXCrud API Projesi, modern yazılım geliştirme tekniklerini kullanarak, kullanıcı yönetimi, ürün yönetimi ve sipariş yönetimi gibi işlevleri sunan bir API projesidir. Projede .NET Core, Entity Framework Core, AutoMapper, FluentValidation, AspNetCoreRateLimit ve JWT Authentication gibi teknolojiler kullanılmıştır.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.