RAJESTARY DIGITAL TECH • SECURITY • EDUCATION
دانش • فناوری • امنیت

دنیای تکنولوژی
از یادگیری شروع می‌شود

آموزش‌های کاربردی، برنامه‌نویسی، امنیت و فناوری برای ساختن، یادگرفتن و بهتر زندگی کردن با تکنولوژی.

LEARN BUILD SECURE CREATE

API فروشگاهی کامل

پروژه نهایی: API فروشگاهی کامل

📖 درس دهم: پروژه نهایی – API فروشگاهی کامل

👋

سلام مهمان عزیز!

برای دسترسی به تمام محتوا و امکانات، وارد شوید.

🎯 هدف این درس: پیاده‌سازی یک پروژه کامل فروشگاه اینترنتی با استفاده از تمام مفاهیم آموخته شده در دوره. این پروژه شامل مدیریت کاربران، محصولات، سبد خرید، سفارشات، پرداخت، تخفیف‌ها و گزارش‌گیری می‌باشد.

مهمان عزیز! 👋
به آخرین و مهم‌ترین درس این دوره خوش آمدی!

در طول ۹ درس گذشته، تمام مفاهیم مورد نیاز برای ساخت یک API حرفه‌ای را یاد گرفتی. حالا وقت آن است که همه این مفاهیم را در یک پروژه واقعی و کامل پیاده‌سازی کنیم: یک API فروشگاهی کامل!

💡 چرا پروژه فروشگاهی؟

  • ✅ شامل تمام مفاهیم مهم API (CRUD، احراز هویت، امنیت، کش، نسخه‌بندی، تست).
  • ✅ یک پروژه واقعی و کاربردی که در بازار کار ارزش بالایی دارد.
  • ✅ قابلیت نمایش در رزومه و نمونه کار.
  • ✅ امکان توسعه و اضافه کردن قابلیت‌های بیشتر.
  • ✅ درک کامل چرخه حیات یک پروژه تجاری.

📋 مشخصات پروژه

نام پروژه API فروشگاه اینترنتی رجستری
نسخه API v1 و v2
تکنولوژی‌ها PHP 8.2، MySQL 8.x، Redis، Composer، PHPUnit
قابلیت‌ها مدیریت کاربران، محصولات، سبد خرید، سفارشات، پرداخت، تخفیف‌ها، گزارش‌گیری
مستندات OpenAPI (Swagger) + Postman Collection

🗄️ ساختار دیتابیس



🗄️
database.sql

SQL
MySQL 8.x




-- ==========================================
-- دیتابیس فروشگاه اینترنتی
-- ==========================================

CREATE DATABASE IF NOT EXISTS shop_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

USE shop_db;

-- ==========================================
-- ۱. جدول کاربران
-- ==========================================
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(150) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    phone VARCHAR(20) NULL,
    address TEXT NULL,
    role ENUM('admin', 'seller', 'customer') DEFAULT 'customer',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    deleted_at TIMESTAMP NULL
);

-- ==========================================
-- ۲. جدول محصولات
-- ==========================================
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    slug VARCHAR(200) NOT NULL UNIQUE,
    description TEXT NULL,
    price DECIMAL(10, 2) NOT NULL,
    compare_price DECIMAL(10, 2) NULL -- قیمت قبلی برای تخفیف
    stock INT NOT NULL DEFAULT 0,
    category_id INT NULL,
    seller_id INT NULL, -- فروشنده (برای بازارچه)
    is_active BOOLEAN DEFAULT true,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL,
    FOREIGN KEY (seller_id) REFERENCES users(id) ON DELETE SET NULL
);

-- ==========================================
-- ۳. جدول دسته‌بندی‌ها
-- ==========================================
CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    slug VARCHAR(100) NOT NULL UNIQUE,
    parent_id INT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (parent_id) REFERENCES categories(id) ON DELETE CASCADE
);

-- ==========================================
-- ۴. جدول سبد خرید (Cart)
-- ==========================================
CREATE TABLE cart_items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE,
    UNIQUE KEY (user_id, product_id)
);

-- ==========================================
-- ۵. جدول سفارشات (Orders)
-- ==========================================
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_number VARCHAR(50) NOT NULL UNIQUE,
    user_id INT NOT NULL,
    total_amount DECIMAL(10, 2) NOT NULL,
    discount_amount DECIMAL(10, 2) DEFAULT 0,
    final_amount DECIMAL(10, 2) NOT NULL,
    status ENUM('pending', 'paid', 'shipped', 'delivered', 'cancelled') DEFAULT 'pending',
    shipping_address TEXT NOT NULL,
    payment_method VARCHAR(50) NULL,
    payment_id VARCHAR(100) NULL, -- شناسه پرداخت از درگاه
    tracking_number VARCHAR(100) NULL,
    notes TEXT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE RESTRICT
);

-- ==========================================
-- ۶. جدول جزئیات سفارش
-- ==========================================
CREATE TABLE order_items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    product_name VARCHAR(200) NOT NULL,
    quantity INT NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    subtotal DECIMAL(10, 2) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE RESTRICT
);

-- ==========================================
-- ۷. جدول تخفیف‌ها
-- ==========================================
CREATE TABLE coupons (
    id INT AUTO_INCREMENT PRIMARY KEY,
    code VARCHAR(50) NOT NULL UNIQUE,
    type ENUM('percentage', 'fixed') NOT NULL,
    value DECIMAL(10, 2) NOT NULL,
    min_order_amount DECIMAL(10, 2) NULL,
    max_discount DECIMAL(10, 2) NULL,
    usage_limit INT NULL,
    used_count INT DEFAULT 0,
    expires_at TIMESTAMP NULL,
    is_active BOOLEAN DEFAULT true,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ==========================================
-- ۸. جدول لاگ‌ها
-- ==========================================
CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NULL,
    action VARCHAR(100) NOT NULL,
    description TEXT NULL,
    ip_address VARCHAR(45) NULL,
    user_agent TEXT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ==========================================
-- ۹. ایندکس‌ها برای بهینه‌سازی
-- ==========================================
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_products_slug ON products(slug);
CREATE INDEX idx_products_category ON products(category_id);
CREATE INDEX idx_products_seller ON products(seller_id);
CREATE INDEX idx_orders_user ON orders(user_id);
CREATE INDEX idx_orders_status ON orders(status);
CREATE INDEX idx_cart_user ON cart_items(user_id);
CREATE INDEX idx_coupons_code ON coupons(code);

📋 لیست Endpointهای پروژه

دسته متد Endpoint توضیح نیاز به احراز
🔐 احراز هویت
Auth POST /auth/register ثبت‌نام کاربر
Auth POST /auth/login ورود کاربر
Auth GET /auth/me اطلاعات کاربر فعلی
👤 کاربران
Users GET /v1/users لیست کاربران (v1) ✅ (admin)
Users GET /v2/users لیست کاربران با جزئیات (v2) ✅ (admin)
📦 محصولات
Products GET /products لیست محصولات با فیلتر و صفحه‌بندی
Products GET /products/{id} جزئیات محصول
Products POST /products ایجاد محصول ✅ (admin/seller)
Products PUT /products/{id} بروزرسانی محصول ✅ (admin/seller)
Products DELETE /products/{id} حذف محصول ✅ (admin/seller)
🛒 سبد خرید
Cart GET /cart مشاهده سبد خرید
Cart POST /cart/items افزودن به سبد خرید
Cart PUT /cart/items/{id} بروزرسانی تعداد
Cart DELETE /cart/items/{id} حذف از سبد خرید
Cart DELETE /cart/clear خالی کردن سبد خرید
📦 سفارشات
Orders GET /orders لیست سفارشات
Orders GET /orders/{id} جزئیات سفارش
Orders POST /orders ثبت سفارش جدید
Orders PUT /orders/{id}/status بروزرسانی وضعیت سفارش ✅ (admin)
🎫 تخفیف‌ها
Coupons GET /coupons لیست کدهای تخفیف ✅ (admin)
Coupons POST /coupons/validate اعتبارسنجی کد تخفیف
Coupons POST /coupons ایجاد کد تخفیف ✅ (admin)
📊 گزارش‌گیری
Reports GET /reports/sales گزارش فروش ✅ (admin)

💎 نکات کلیدی پروژه

  • ✅ این پروژه شامل تمام مفاهیم یادشده در ۹ درس قبلی است.
  • ✅ از معماری MVC با مسیریاب دستی استفاده شده است.
  • ✅ احراز هویت با JWT و Middleware پیاده‌سازی شده است.
  • ✅ امنیت با Prepared Statements، Rate Limiting و Security Headers تأمین شده است.
  • ✅ از Redis برای کش کردن محصولات و سبد خرید استفاده شده است.
  • ✅ نسخه‌بندی API با URI Path پیاده‌سازی شده است.
  • ✅ تست‌های Unit و Feature با PHPUnit نوشته شده است.
  • ✅ مستندات با OpenAPI (Swagger) تولید شده است.
  • ✅ لاگ‌گیری با Monolog انجام شده است.

📝 گام‌های پیاده‌سازی پروژه

  1. مرحله ۱: ایجاد ساختار پروژه و نصب وابستگی‌ها.
  2. مرحله ۲: پیاده‌سازی کلاس‌های Core (Router, Request, Response).
  3. مرحله ۳: پیاده‌سازی اتصال دیتابیس و مدل‌ها.
  4. مرحله ۴: پیاده‌سازی احراز هویت با JWT.
  5. مرحله ۵: پیاده‌سازی Endpointهای محصولات و دسته‌بندی‌ها.
  6. مرحله ۶: پیاده‌سازی سبد خرید و مدیریت آن.
  7. مرحله ۷: پیاده‌سازی سفارشات و تراکنش‌های مالی.
  8. مرحله ۸: پیاده‌سازی سیستم تخفیف‌ها.
  9. مرحله ۹: پیاده‌سازی کش با Redis.
  10. مرحله ۱۰: پیاده‌سازی تست‌ها و مستندات.

🏁 جمع‌بندی کل دوره

مهمان عزیز! 🎉

به پایان دوره فوق‌پیشرفته توسعه API رسیدی! در طول این ۱۰ درس، یاد گرفتی:

  • درس ۱: مفاهیم پایه API، HTTP، REST و معماری Client-Server.
  • درس ۲: پیاده‌سازی RESTful API با PHP خام.
  • درس ۳: مدیریت داده‌ها و پایگاه‌داده با PDO.
  • درس ۴: اعتبارسنجی و احراز هویت با JWT.
  • درس ۵: امنیت API پیشرفته (OWASP، SQLi، XSS، CSRF، Rate Limiting).
  • درس ۶: مستندسازی API با OpenAPI (Swagger).
  • درس ۷: Caching و افزایش عملکرد با Redis.
  • درس ۸: API Versioning و مدیریت چرخه حیات.
  • درس ۹: تست و دیباگ API حرفه‌ای با PHPUnit.
  • درس ۱۰: پروژه نهایی – API فروشگاهی کامل.

🎓 تبریک! شما یک توسعه‌دهنده حرفه‌ای API هستید!

حالا شما توانایی طراحی، پیاده‌سازی، امن‌سازی، بهینه‌سازی و مستندسازی APIهای حرفه‌ای را دارید.
از این مهارت برای ساخت پروژه‌های بزرگ و ورود به بازار کار استفاده کن.

🚀 موفق و پیروز باشی!


🗺️ نقشه راه دوره: شما اینجا هستید!

به پایان دوره رسیدی! تمام ۱۰ درس را با موفقیت پشت سر گذاشتی.

درس عنوان درس آنچه یاد گرفتی
۱ مفاهیم پایه API HTTP، REST، معماری Client-Server
۲ پیاده‌سازی RESTful API با PHP خام مسیریابی، متدها، پارامترها، پاسخ‌های JSON
۳ مدیریت داده‌ها و پایگاه‌داده اتصال PDO، CRUD، تراکنش‌ها، Pagination
۴ اعتبارسنجی و احراز هویت JWT، Roles/Permissions، Middleware
۵ امنیت API پیشرفته OWASP Top 10، SQLi، XSS، CSRF، Rate Limiting
۶ مستندسازی API با OpenAPI Swagger، OpenAPI Specification، مستندات تعاملی
۷ Caching و افزایش عملکرد Redis، ETag، Cache-Control، Query Optimization
۸ API Versioning و مدیریت چرخه حیات استراتژی‌های نسخه‌بندی، Deprecation، Backward Compatibility
۹ تست و دیباگ API حرفه‌ای PHPUnit، Mocking، Logging، Postman Collection
۱۰ پروژه نهایی: API فروشگاهی پروژه کامل فروشگاه اینترنتی با تمام قابلیت‌ها

🔗 لینک‌های مرتبط

👤
نویسنده
📅
تاریخ انتشار 30 مرداد 1405
🔄
آخرین بروزرسانی 30 مرداد 1405

نظر خود را بنویسید

با ثبت نظر، به بهبود محتوای ما کمک کنید

امتیاز شما به این مطلب (اختیاری)
برای امتیازدهی، روی ستاره‌ها کلیک کنید
نام شما در سایت نمایش داده می‌شود
ایمیل شما محفوظ می‌ماند
0 کاراکتر | حداقل ۱۰ کاراکتر
نظر سازنده و مفید بنویسید
ارسال دیدگاه: +۵ امتیاز
امتیازدهی: +۲ امتیاز
نشان شما: مبتدی
لطفاً از کلمات محترمانه استفاده کنید. دیدگاه‌های توهین‌آمیز حذف می‌شوند.
⚠️

هشدار مهم!

برای اتصال به درگاه پرداخت و انجام تراکنش، لطفاً VPN یا فیلترشکن خود را خاموش کنید.

⏳ ادامه در
5
ثانیه