php - 未找到必需的 @SWG\Info()

标签 php swagger laravel-5.1

我对使用 Swagger 还很陌生。由于我的项目是使用 Laravel,所以我使用 Swaggerevel 来记录我的 API。在我尝试生成如下时,

./vendor/bin/swagger app/ -o storage/docs/api-docs.json

表明

[INFO] Required @SWG\Info() not found

    get /api/resource.json
-----------------------
1 operations documented
-----------------------
Written to /home/admin/api/gevme-api/storage/docs/api-docs.json

当我尝试访问时,localhost:8000/docs,它正确显示了我生成的 json api。但是当我尝试访问 localhost:8000/api-docs 时,同样的错误信息再次出现。

ErrorException in Logger.php line 38:
Required @SWG\Info() not found
in Logger.php line 38
at HandleExceptions->handleError('1024', 'Required @SWG\Info() not found', '/home/admin/api/gevme-api/vendor/zircote/swagger-php/src/Logger.php', '38', array('entry' => 'Required @SWG\Info() not found', 'type' => '1024'))
at trigger_error('Required @SWG\Info() not found', '1024') in Logger.php line 38
at Logger->Swagger\{closure}('Required @SWG\Info() not found', '1024')
at call_user_func(object(Closure), 'Required @SWG\Info() not found', '1024') in Logger.php line 68
at Logger::notice('Required @SWG\Info() not found') in AbstractAnnotation.php line 365
at AbstractAnnotation->validate() in Analysis.php line 284
at Analysis->validate() in functions.php line 46
at Swagger\scan('/home/admin/api/gevme-api/modules/Api', array('exclude' => array('/home/admin/api/gevme-api/storage', '/home/admin/api/gevme-api/tests', '/home/admin/api/gevme-api/resources/views', '/home/admin/api/gevme-api/config', '/home/admin/api/gevme-api/vendor'))) in routes.php line 39
at SwaggervelServiceProvider->{closure}()
at call_user_func_array(object(Closure), array()) in Route.php line 155
at Route->runCallable(object(Request)) in Route.php line 130
at Route->run(object(Request)) in Router.php line 704
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in OAuthExceptionHandlerMiddleware.php line 36
at OAuthExceptionHandlerMiddleware->handle(object(Request), object(Closure))
at call_user_func_array(array(object(OAuthExceptionHandlerMiddleware), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54
at require_once('/home/admin/api/gevme-api/public/index.php') in server.php line 21

最佳答案

问题是 - 您缺少 @SWG\Info block 。 这是一个告诉 swagger 关于您的 API 的一些最常见信息的 block 。

我通常将它放在一个单独的 Controller 中,该 Controller 正在渲染 swagger JSON。 这是一个例子:

/**
 * @SWG\Swagger(
 *     schemes={"http","https"},
 *     host="api.host.com",
 *     basePath="/",
 *     @SWG\Info(
 *         version="1.0.0",
 *         title="This is my website cool API",
 *         description="Api description...",
 *         termsOfService="",
 *         @SWG\Contact(
 *             email="contact@mysite.com"
 *         ),
 *         @SWG\License(
 *             name="Private License",
 *             url="URL to the license"
 *         )
 *     ),
 *     @SWG\ExternalDocumentation(
 *         description="Find out more about my website",
 *         url="http..."
 *     )
 * )
 */

class SwaggerController extends...

关于php - 未找到必需的 @SWG\Info(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884345/

相关文章:

javascript - 如何使用 Angular JS 取消设置 php session

php - laravel 中特定字段的自定义验证消息

c# - 如何在 Swagger 3 中按区域分隔 Controller ?

php - 如何在 Laravel 中对密码使用 MD5 哈希?

php - 如何在 symfony 中检索一个 ID 之后的所有记录?

c# - 在 Swagger UI 中看不到我的 Controller 操作

swagger - 如何修复 Swagger 编辑器中的 "Path parameter ... must have the corresponding {...} segment in the/path"错误?

php - upload_max_filesize 在 Laravel 5.1 中没有改变

php - 创建一个可以访问我的模型的 Laravel 5.1 中间件

PHP:根据特定日期更新 MySQL 条目