yaro/apidocs

Laravel 5 的 API 文档生成器

0.5.0 2020-05-10 12:04 UTC

README

Scrutinizer Code Quality Build Status

基于 DocBlock 注释的 Laravel 5 API 文档生成器。

安装

您可以通过 Composer 安装此包。

composer require yaro/apidocs

将此服务提供者和别名添加到 config/app.php

'providers' => [
    //...
    Yaro\ApiDocs\ServiceProvider::class,
    //...
]

'aliases' => [
    //...
    'ApiDocs' => Yaro\ApiDocs\Facade::class,
    //...
]

然后发布配置和资源文件

php artisan vendor:publish --provider="Yaro\ApiDocs\ServiceProvider"

您应该在 config/filesystems.php 中添加名为 snapshots 的磁盘,其中将保存 blueprint 快照

//...
'disks' => [
    //...
    'apidocs' => [
        'driver' => 'local',
        'root'   => storage_path('apidocs'),
    ],
//...    

使用方法

您的所有路由都必须以某个段开始,例如 /api/(在配置中更改)。该包将收集以该段开始的仅此段的路由。

将此注释添加到您的路由方法 DocBlock 中。例如:

/**
 * Some api endpoint for important stuff.
 * 
 * Just show some template with     
 * some very long description    
 * on several lines
 * 
 * @param int    $offset   Just an offset size
 * @param string $password 
 */
public function getSomeStuff()
{
    return response()->json([]);
}

创建一个路由来查看您的文档。

Route::get('/docs', function() {
    return ApiDocs::show();
});

您还可以通过添加 apidocs.auth.basic 中间件来强制授权提示。授权身份位于 apidocs.auth.credentials 配置下。

Route::get('/docs', function() {
    return ApiDocs::show();
})->middleware(['apidocs.auth.basic']);

要将某些路由/类排除在外,请将它们添加到配置的 exclude 中。可以使用星号来表示通配符。

'exclude' => [
    'classes' => [
        // 'App\Http\Controllers\*' - exclude all controllers from docs.
        // 'App\Http\Controllers\MyController@*' - remove all methods for specific controller from docs.
    ],
    
    'routes' => [
        // 'payment/test',
        // 'simulate/*',
    ],
 ],

此外,您还可以创建 API Blueprint 文件

ApiDocs::blueprint()->create();
// or pass snapshot name and/or filesystem disc name
ApiDocs::blueprint()->create('my-newest-snapshot', 's3-blueprint');

或直接渲染其内容而不创建文件

echo ApiDocs::blueprint()->render();

或通过 artisan

php artisan apidocs:blueprint-create

待办事项

  • 生成包含所有文档信息的普通 HTML 页面。
  • 包含响应的完整尺寸块。

许可

MIT 许可证 (MIT)。请参阅 LICENSE 获取更多信息。