我正在尝试使用带有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文件的虚拟主机,但此时我不想进行额外的配置 .