我正在尝试使用swagger和 laravel 来自动记录我们的 RESTful API。目标是将 swagger 注释保留在 laravel 控制器中,然后让 swagger 解析注释并生成关联的 .json/.php 文件。理想情况下,我希望 laravel 项目提供 swagger 文件,以便所有内容都保持在同一个引擎盖下并保持同步。
为了实现这一点,我在我的 laravel 项目的根目录(与public所在的目录相同)中创建了一个docs目录。然后,我将以下路由添加到 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 大师,这是提供这些 swagger 文件的最佳方式吗?我尝试将docs目录公开,但这会导致重定向循环。
实现此目的的另一种方法是在我的 Web 服务器配置中创建一个直接指向这些 swagger 文件的虚拟主机,但在这一点上,我宁愿不必进行这种额外的配置。