یک API فروشگاهی ساده و آموزشی با ASP.NET Core است که برای تمرین معماری چندلایه، احراز هویت JWT، کار با Entity Framework Core، سبد خرید، سفارش و پرداخت sandbox ساخته شده است.
این پروژه برای یادگیری و تمرین مناسب است؛ اگر قصد استفاده جدی یا production دارید، حتماً تنظیمات امنیتی، لاگینگ، تستها و مدیریت خطا را کاملتر کنید.
- ثبتنام، ورود، خروج، پروفایل و refresh token
- احراز هویت و سطح دسترسی با JWT و Role
- مدیریت سبد خرید کاربران
- ساخت سفارش از روی سبد خرید
- ساخت پرداخت و callback برای درگاههای sandbox
- seed اولیه محصولات از DummyJSON
- Swagger UI برای تست سریع API
- ساختار چندلایه بر پایه
Domain،Application،InfrastructureوAPI
.NET 9ASP.NET Core Web APIEntity Framework CoreSQL ServerJWT Bearer AuthenticationFluentValidationSwagger / OpenAPI
ShopAPI/
├── API/ # نقطه ورود برنامه، کنترلرها، Swagger و تنظیمات اجرا
├── Application/ # سرویسها، DTOها، اعتبارسنجیها و قراردادهای برنامه
├── Domain/ # Entityها، Enumها و Exceptionهای دامنه
├── Infrastructure/ # EF Core، Repositoryها، Seed، JWT، Hashing و Payment Providerها
├── ShopApi.sln
└── README.md
- نصب
.NET SDK 9 - نصب
SQL ServerیاSQL Server Express - دسترسی اینترنت برای seed اولیه محصولات از
https://dummyjson.com
git clone https://github.com/NimaHaji/ShopAPI.git
cd ShopAPIیک فایل محلی بسازید:
cp API/appsettings.example.json API/appsettings.Development.jsonسپس مقدارهای زیر را در API/appsettings.Development.json مطابق سیستم خودتان تغییر دهید:
ConnectionStrings:localJwtSettings:SecretKey- تنظیمات sandbox پرداخت در بخش
Payment
فایلهای local، secret و environment نباید داخل Git commit شوند.
dotnet restore
dotnet builddotnet run --project APIبعد از اجرا، Swagger معمولاً از یکی از آدرسهای زیر در دسترس است:
http://localhost:5033/swagger
https://localhost:7033/swagger
در زمان شروع برنامه، migrationها بهصورت خودکار اجرا میشوند و اگر جدول محصولات خالی باشد، دادههای نمونه seed میشوند.
برای اینکه پروژه تمیز و امن روی GitHub منتشر شود:
- هیچ
ConnectionStringواقعی، کلید JWT، token، رمز عبور یا اطلاعات درگاه واقعی را commit نکنید. - از
API/appsettings.example.jsonبهعنوان نمونه استفاده کنید و تنظیمات واقعی را فقط در فایلهای local نگه دارید. - فایلهایی مثل
.env،appsettings.Development.json،appsettings.Local.json،secrets.json،bin/وobj/باید ignore باشند. - اگر قبلاً secret واقعی commit شده، فقط حذف از فایل کافی نیست؛ باید secret را rotate کنید و در صورت نیاز history گیت را پاکسازی کنید.
برای شروع ساده:
- پروژه را اجرا کنید.
- وارد Swagger شوید.
- از endpoint ثبتنام و ورود، token بگیرید.
- در Swagger روی
Authorizeکلیک کنید و مقدار زیر را وارد کنید:
Bearer YOUR_ACCESS_TOKEN
نمونه مسیرهای مهم:
POST /api/User/RegisterPOST /api/User/loginGET /api/User/ProfileGET /api/Cart/CartPOST /api/Cart/itemsPOST /api/Checkout/checkoutPOST /api/Payment/GetPaymentUrl
در مراحل بعدی قرار است این بخشها اضافه یا کاملتر شوند:
- اضافه شدن ماژول انبارداری برای کم و زیاد شدن تعداد محصولات و مدیریت دقیقتر موجودی
- اضافه شدن Docker و Docker Compose تا بقیه بتوانند پروژه را راحتتر برای تمرین بالا بیاورند
- بهبود تستها و سناریوهای خطا
- کاملتر شدن مستندات endpointها
- تمیزکاری بیشتر برای آمادهسازی production
اگر میخواهید یک API فروشگاهی ساده را تمرین کنید، این پروژه میتواند نقطه شروع خوبی باشد. میتوانید آن را fork کنید و روی بخشهایی مثل product management، order flow، payment، authentication یا clean architecture تمرین کنید.
این پروژه آموزشی و در حال توسعه است. ممکن است باگهای خیلی ریز، edge caseهای پوششدادهنشده یا قسمتهایی که هنوز نیاز به refactor دارند داخل آن وجود داشته باشد.