robosys-labs / swaggervel
A great way to integrate Swagger into Laravel
Requires
- php: >=7.4
- illuminate/support: ^7.0|^8.0|^9.0
- swagger-api/swagger-ui: ^3.1
- zircote/swagger-php: ^2.0
This package is auto-updated.
Last update: 2024-11-15 01:01:25 UTC
README
This package combines Swagger-php and swagger-ui into one Laravel-friendly package.
When you run your app in debug mode, Swaggervel will scan your app folder (or any folder that is set under the "app-dir" variable in the packages config), generate swagger json files and deposit them to the doc-dir folder (default is /docs
). Files are then served by swagger-ui under the api-docs director.
Installation
- Execute
composer require appointer/swaggervel --dev
within your laravel root directory - Add
Appointer\Swaggervel\SwaggervelServiceProvider::class
to your providers array inapp/config/app.php
above your route provider, to avoid any catch-all routes - Run
php artisan vendor:publish --tag=public
to push swagger-ui to your public folder (can be found in public/vendor/swaggervel). - Optionally run
php artisan vendor:publish --tag=config
to push the swaggervel default config into your application's config directory. - Optionally run
php artisan vendor:publish --tag=views
to push the swaggervel index view file intoresources/views/vendor/swaggervel
.
Examples (when using the default configuration)
- www.example.com/docs <- You may find your automatically generated Swagger .json-File there
- www.example.com/api/docs <- Access to your Swagger UI
Options
All options are well commented within the swaggervel.php config file.
How to Use Swagger-php
The actual Swagger spec is beyond the scope of this package. All Swaggervel does is package up swagger-php and swagger-ui in a Laravel-friendly fashion, and tries to make it easy to serve. For info on how to use swagger-php look here. For good examples of swagger-php in action look here.
Further Notes
This package is a fork of slampenny/Swaggervel, as it is no longer maintained.
TODO
- the handling of the /doc call is still really inconsistent, as you cannot change the file name (api-docs.json), but are able to change the file you acces when using the /doc route.