sitesoft / laravel-apis
Init swagger and connect to Sitesoft APIS
Installs: 1 809
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Requires
- php: >=5.4.0
- barryvdh/laravel-cors: *
- sitesoft/laravel-config-writer: *
- zircote/swagger-php: ^3.0
This package is not auto-updated.
Last update: 2024-11-23 21:38:58 UTC
README
1 . Установить через composer
$ composer require sitesoft/laravel-apis
2 . В файле config/app.php
добавить в providers
Sitesoft\LaravelApis\ApisServiceProvider::class
3 . Чтобы разрешить CORS для всех api запросов, добавьте HandleCors
middleware в $middlewareGroups
в файле app/Http/Kernel.php
:
(См. раздел "Поддержка Cross-Origin Resource Sharing (CORS)")
protected $middlewareGroups = [
'web' => [
// ...
],
'api' => [
// ...
\Barryvdh\Cors\HandleCors::class,
],
];
4 . Опубликовать файл настроек apis.php
из пакета:
$ php artisan vendor:publish --provider="Sitesoft\LaravelApis\ApisServiceProvider"
Использование
Добавление нового проекта на Sitesoft APIS
$ php artisan apis:create-project <name> <version> <url> --path=<path>
где
<name>
- имя нового проекта (можно использовать кириллицу)<version>
- версия апи (только цифры)<url>
- базовый url к апи (должен начинаться сhttp
илиhttps
, напримерhttp://test.com/api
)<path>
- путь к api директории относительно папкиapp/Http/Controllers/
(не обязательно, по умолчаниюApi
)
например, если файлы вашего api находятся в папке app/Http/Controllers/Api/v1
то команда будет следующей:
$ php artisan apis:create-project MyApi 1 http://test.com/api --path="Api/v1"
эта команда сделает следующее:
- сгенерирует токен и запишет в файл
config/apis.php
- добавит
SwaggerController.php
вapp/Http/Controllers/Api/v1/
- добавит маршрут для swagger'а в файл
routes/api.php
- сделает запрос к Sitesoft APIS на добавление нового проекта
- добавит в файл настроек
apis.php
путь для генерацииswagger.json
Генерация swagger.json
Данный файл генерируется из ваших doc-блоков библиотекой swagger-php отдельно для каждой версии api.
$ php artisan swaggen
Папки для генерации задаются в файле настроек config/apis.php
в параметре paths
.
Swagger просканирует эти папки и создаст в каждой свой swagger.json
.
Каждый такой файл должен быть доступен из вне, для этого при apis:create-project
и apis:add-version
по пути указанному в <path>
создается файл SwaggerController.php
Поддержка Cross-Origin Resource Sharing (CORS)
Ваши api методы должны возвращать заговолок Access-Control-Allow-Origin
для того, чтобы иметь возможность просмотреть ответ прямо на Sitesoft APIS.
Для поддержки CORS используется barryvdh/laravel-cors, для его работы достаточно выполнить пункт 3 из раздела Установка. Или вы можете включить CORS только для некоторых маршрутов:
Route::group(['middleware' => 'cors'], function(){
Route::get('/create', 'Api\CreateController@index');
Route::post('/add', 'Api\AddController@index');
Route::delete('/delete', 'Api\DeleteController@index');
});
или так
Route::get('/create', 'Api\CreateController@index')->middleware('cors');
Route::post('/add', 'Api\AddController@index')->middleware('cors);
Route::delete('/delete', 'Api\DeleteController@index')->middleware('cors');
У модуля laravel-cors также есть возможность настройки https://github.com/barryvdh/laravel-cors#configuration
Добавление новой версии на Sitesoft APIS
$ php artisan apis:add-version <version> <url> --path=<path>
где
<version>
- версия апи (только цифры)<url>
- базовый url к апи (должен начинаться сhttp
илиhttps
, напримерhttp://test.com/api/v2
)<path>
- путь к api директории относительно папкиapp/Http/Controllers/
(не обязательно, по умолчаниюApi_v<version>
)
например, если ваши файлы с новой версией api находятся в папке app/Http/Controllers/Api/v2
(относительно корня проекта) то команда будет следующей:
$ php artisan apis:add-version 2 http://test.com/api/v2 --path="Api/v2"
эта команда сделает следующее:
- добавит
SwaggerController.php
вapp/Http/Controllers/Api/v2/
- добавит маршрут для swagger'а в файл
routes/api.php
- сделает запрос к Sitesoft APIS на добавление новой версии проекта
- добавит в файл настроек
apis.php
путь для генерацииswagger.json