首页 文章

如何从laravel服务?

提问于
浏览
9

我正在尝试使用带有laravel的swagger来自动记录我们的RESTful API . 目标是在laravel控制器中保持swagger注释,然后swagger解析注释并生成相关的.json / .php文件 . 理想情况下,我希望laravel项目能够提供swagger文件,以便将所有内容保存在同一个引擎盖下并保持同步 .

为了实现这一点,我在laravel项目的根目录中创建了一个docs目录(public所在的目录) . 然后我将以下路由添加到routes.php:

Route::get('docs/{page?}', function($page='index.php') {
    header('Access-Control-Allow-Origin: *');
    $parts = pathinfo($page);
    $path = $_SERVER["DOCUMENT_ROOT"] . "/../docs/$page";
    if ($parts['extension'] === 'php') {
        require($path);
    } else {
        return file_get_contents($path);
    }
});

使用这种方法,我可以将我的swagger-ui网站指向http:// mydomain / docs,剩下的就是魔术 .

对于你们所有的laravel大师,这是服务这些招摇文件的最佳方式吗?我尝试将docs目录公开,但这会导致重定向循环 .

另一种实现此目的的方法是在我的Web服务器配置中创建一个直接指向这些swagger文件的虚拟主机,但此时我不想进行额外的配置 .

2 回答

  • 8

    我写了一个swaggervel,一个Laravel包,它使用swagger-php自动生成你的swagger json,用redgeoff的代码提供它,然后使用swagger-ui显示它 .

    只需在composer.json中的require中添加以下行:

    “jlapp / swaggervel”:“dev-master”

    或者你可以在Git上得到它:https://github.com/slampenny/Swaggervel.git

  • 0

    我现在正在研究这个问题,我已经解决了重定向循环,但没有像我想的那样优雅 .

    只需在 public/docs/ 目录中添加 .htaccess 文件,即可:

    <IfModule mod_rewrite.c>
        RewriteEngine On
    </IfModule>
    

    你可以在不输入index.php的情况下访问该文件 . 如果我想出一种更优雅的文档生成方式,我会更新 .

相关问题