Open Api Swagger 3 for Yii2 Framework ¶
Requirements ¶
- PHP 7.1
- Yii2 Framework
Installation ¶
The preferred way to install this wrapper is through composer.
php composer.phar require genxoft/yii2-oas3 "*"
or
composer require genxoft/yii2-oas3 "*"
or add to the require section of composer.json
"genxoft/yii2-oas3" : "*"
Integration ¶
Add action to web controller (for example SiteController.php):
public function actions()
{
return [
'api-docs' => [
'class' => 'genxoft\swagger\ViewAction',
'apiJsonUrl' => \yii\helpers\Url::to(['/site/api-json'], true),
],
'api-json' => [
'class' => 'genxoft\swagger\JsonAction',
'dirs' => [
Yii::getAlias('@api/modules/api/controllers'),
Yii::getAlias('@api/modules/api/models'),
Yii::getAlias('@api/models'),
],
],
];
}
Open Api Swagger 3 example annotation ¶
Api server description
/**
* @OA\Info(
* version="1.0",
* title="Application API",
* description="Server - Mobile app API",
* @OA\Contact(
* name="John Smith",
* email="john@example.com",
* ),
* ),
* @OA\Server(
* url="https://example.com/api",
* description="main server",
* )
* @OA\Server(
* url="https://dev.example.com/api",
* description="dev server",
* )
*/
class DefaultController extends Controller
{
...
Controller annotation
/**
* @OA\Get(path="/",
* summary="Handshake",
* tags={"handshake"},
* @OA\Parameter(
* name="access-token",
* in="header",
* required=false,
* @OA\Schema(
* type="string"
* )
* ),
* @OA\Response(
* response=200,
* description="Returns Hello object",
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(ref="#/components/schemas/Hello"),
* ),
* ),
* )
*/
public function actionIndex()
{
...
Model annotation
/**
*@OA\Schema(
* schema="Hello",
* @OA\Property(
* property="message",
* type="string",
* description="Text message"
* ),
* @OA\Property(
* property="time",
* type="integer",
* description="Server current Unix time"
* ),
* @OA\Property(
* property="date",
* type="string",
* format="date-time",
* description="Server current date time"
* )
*)
*/
class Hello extends Model
{
...
Donate ¶
LICENSE ¶
This curl wrapper is released under the MIT license.
Excellent library, thank you !
I'm getting this issue. Anyone can help me on this?
vendor/bin/openapi api/modules/v3/controllers/BookmarksController.php swagger
Notice: Trying to access array offset on value of type bool
Notice: Trying to access array offset on value of type bool
Notice: Trying to access array offset on value of type bool
Exception: Undefined class constant 'DUMP_OBJECT_AS_MAP'
-------------------------------swagger annotations----------
Top of the file
/**
*/
Above action
/** * @OA\Get( * tags={"Tag"}, * path="/add-bookmark", * summary="Summary", * @OA\Response(response=200, description="OK"), * @OA\Response(response=401, description="Unauthorized"), * @OA\Response(response=404, description="Not Found") * ) */ Thanks
Issue was in symfony/yaml extesion. Upgraded the extesion and it is working fine.
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.