<?php
/**
* @SWG\Resource(
* basePath="http://dizplayzone.com/api",
* resourcePath="/account",
* description="Read information on a company dashboard",
* swaggerVersion="1.2",
* apiVersion="1.1",
* )
*/
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
$account = $app['controllers_factory'];
/**
* /account/{id}
* ------------------------------------------------------------------------
*
* @SWG\Api(
* path="/account/{id}",
* @SWG\Operation(
* method="GET",
* summary="Returns info from a company dashboard",
* notes="Returns info from a company dashboard",
* type="account",
* nickname="view_account",
* @SWG\Parameter(
* name="id",
* description="Company ID",
* required=true,
* type="integer",
* paramType="path"* ),
* @SWG\ResponseMessage(code=404, message="Bad, really bad name.")
* ),
* )
*
*
* @trans foo,bar
*
*/
$account->get('/account/{id}', function ($id) use ($app) {
...return "Welcome {$user['username']}!";
});
/**
* /account/{id}
* ------------------------------------------------------------------------
*
* @SWG\Api(
* path="/account/{id}",
* @SWG\Operation(
* method="POST",
* summary="Add info to a company dashboard",
* notes="Add info to a company dashboard",
* type="account",
* nickname="post_to_account",
* @SWG\Parameter(
* name="id",
* description="Company ID",
* required=true,
* type="integer",
* paramType="path"* ),
* @SWG\ResponseMessage(code=404, message="Bad, really bad name.")
* )
* )
*
*
*/
$account->post('/account/{id}', function ($id) use ($app) {
....
});
return $account;
Однако swagger-php возвращает этот ответ JSON:
{
"basePath":"http://dizplayzone.com/api",
"swaggerVersion":"1.2",
"apiVersion":"1.1",
"resourcePath":"/account",
"apis":[
{
"path":"/account/{id}",
"operations":[
{
"method":"POST",
"summary":"Add info to a company dashboard",
"nickname":"post_to_account",
"type":"account",
"parameters":[
{
"paramType":"path",
"name":"id",
"type":"integer",
"required":true,
"description":"Company ID"}
],
"responseMessages":[
{
"code":404,
"message":"Bad, really bad name."}
],
"notes":"Add info to a company dashboard"}
]
}
]
}
Обратите внимание, что он игнорирует операцию HTTP метода GET ??
Я думаю, что этот точный синтаксис для аннотаций работал отлично пару часов назад, но я должен был что-то изменить, потому что теперь он больше не работает ….
Есть идеи ?
Хм странно, теперь я удалил всю аннотацию для GET, переписал ее и заново вставил, и она работает ….
Теперь я нашел причину, по которой мой метод GET был проигнорирован.
Оказывается, что php-swagger будет игнорировать любой докблок, содержащий TABS, даже если структура аннотации на 100% правильная.
Надеюсь, что это помогает другим