OpenAPI مبتنی بر Route و Swagger UI
Laravel Scaffolder علاوه بر گزینه --swagger هنگام تولید ماژول، یک workflow مستقل و بدون وابستگی خارجی برای ساخت OpenAPI JSON از Routeهای اپلیکیشن دارد.
دو مسیر Swagger
مستندات هنگام تولید ماژول
اگر هنگام ساخت ماژول خروجی Swagger/OpenAPI مربوط به همان ماژول را میخواهید از --swagger استفاده کنید:
php artisan make:module Product --api --swagger \
--fields="name:string,price:decimal(10,2)"
تولید JSON از Routeهای اپلیکیشن
دستور swagger:generate Routeهای API ثبتشده را بررسی میکند و یک specification با فرمت OpenAPI 3 JSON میسازد:
php artisan swagger:generate
برای این مسیر نیازی به L5-Swagger یا swagger-php نیست.
workflow پیشنهادی
ابتدا فایلهای UI داخلی را یکبار آماده کنید:
php artisan swagger:init
سپس specification را تولید کنید:
php artisan swagger:generate
و Swagger UI مستقل را اجرا کنید:
php artisan swagger:ui
آدرس پیشفرض:
http://localhost:8000
برای تولید دوباره JSON درست قبل از اجرای UI:
php artisan swagger:ui --refresh
swagger:init
swagger:init
--force بازنویسی فایلهای UI موجود
این دستور فایلهای Swagger UI را در storage/swagger-ui آماده میکند. اگر swagger.json تولیدشده از قبل وجود داشته باشد، هنگام refresh شدن assetهای UI حفظ میشود.
swagger:generate
swagger:generate
--output= مسیر دلخواه swagger.json
--title= عنوان API (پیشفرض: API Documentation)
--version= نسخه API (پیشفرض: 1.0.0)
--host= جایگزینی Server URL
مثال:
php artisan swagger:generate \
--title="Store API" \
--version="2.0.0" \
--host="https://api.example.com"
مسیر خروجی سفارشی:
php artisan swagger:generate --output=storage/api/openapi.json
اگر --output ندهید، مسیر از تنظیمات Swagger در config پکیج خوانده میشود.
swagger:ui
swagger:ui
--port=8000 پورت اجرا
--host=localhost Host/IP برای bind
--refresh اجرای swagger:generate قبل از شروع UI
مثال:
php artisan swagger:ui --port=8080
php artisan swagger:ui --host=127.0.0.1 --port=8080 --refresh
برای جلوگیری از command injection، مقدار host فقط میتواند localhost یا یک IP معتبر باشد.
swagger:config
نمایش تنظیمات فعلی:
php artisan swagger:config --show
خروجی تنظیمات قابل استفاده در .env:
php artisan swagger:config --export-env
گزینههای دستور:
--show
--export-env
--theme=vanilla|tailwind|dark
--primary-color=
--secondary-color=
--title=
--reset
اجرای swagger:config بدون گزینه، حالت تعاملی را باز میکند.
پیکربندی
تنظیمات Swagger زیر کلید swagger در config/module-generator.php قرار دارند و این موارد را کنترل میکنند:
- Theme، رنگها و فونتهای UI
- Dark Mode
- عنوان و تنظیمات نمایش
- host/port سرور مستقل
- مسیر و نام فایل specification
- middleware احراز هویت و Security Schemeهای OpenAPI
چند Environment Variable پرکاربرد:
SWAGGER_THEME=vanilla
SWAGGER_SERVER_HOST=localhost
SWAGGER_SERVER_PORT=8000
SWAGGER_SPEC_PATH=storage/swagger-ui
SWAGGER_SPEC_FILENAME=swagger.json
SWAGGER_SECURE_SPEC=false
SWAGGER_AUTH_MIDDLEWARE=auth,auth:api,auth:sanctum
ساختار کامل در راهنمای پیکربندی آمده است.
دستور قدیمی
make:swagger برای backward compatibility با مسیر قدیمی تولید Swagger همچنان ثبت شده است. برای workflow مبتنی بر Route و JSON که در این صفحه توضیح داده شد از swagger:generate استفاده کنید.
دستورهایی که وجود ندارند
Laravel Scaffolder دستورهای generate:swagger، swagger:export یا swagger:docs را ثبت نمیکند. برای تولید فایل JSON از swagger:generate و گزینه --output استفاده کنید.