laravel文档
laravel-doc
⛵laravel-doc
是一个用来生成文档,通过markdown来撰写文档,并提供web访问文档的项目
项目演示地址
安装要求
- PHP >= 7.0.0
- Laravel >= 5
文档截图
接口截图
安装
composer require foryoufeng/laravel-doc
如果你是运行的Laravel 5.5以下的版本,需要在config/app.php
的service provider中添加:
Foryoufeng\Doc\DocServiceProvider::class
运行如下命令来发布资源文件
php artisan doc:install
发布资源之后会多出很多文件
/public/vendor/laravel-doc //样式文件
/resources/views/docs //界面文件
/resources/mds/docs //文档文件
/resources/mds/apidocs //api文件
/app/Http/Controllers/Docs //增加了控制器文件
config/laravel_doc.php //文档配置文件
routes/web.php中增加了路由文件
访问/doc
,即可看到本项目的说明文档
访问/apidoc
,即可看到本项目的接口说明文档
如何使用
普通文档的编写
在resources/mds/docs
中创建你的md文件,如demo.md
,加入你需要的内容,
然后到app/Http/Controllers/Docs/LaravelDocController.php
的index_md
中加入数据即可访问,例如:
//默认已经加入了2个例子
private function index_md()
{
return [
[
'name' => config('laravel_doc.languages.install'),
'doc_link' => 'install.md',
],
[
'name' => config('laravel_doc.languages.how_use'),
'doc_link' => 'how_use.md',
],
[
'name' => 'demo',
'doc_link' => 'demo.md',
],
];
}
然后访问/doc
,即可看到效果
控制器说明
默认文档的路径
$this->mds_path=resource_path('mds/docs/');
getMenu()
里面的代码是文档显示的菜单,这个是写文档需要用到的
- 配置多个菜单示例
protected function getMenu()
return [
[
'name'=>config('laravel_doc.languages.project_doc'),
'spread'=>true,//菜单是否展开,false不展开
'children'=>[
'name'=>config('laravel_doc.languages.install'),
'doc_link'=>'install.md',
],
],
[
'name'=>config('laravel_doc.languages.project_doc'),
'spread'=>false,//不展开菜单
'children'=>[
'name'=>config('laravel_doc.languages.install'),
'doc_link'=>'install.md',
],
],
];
}
- 配置好菜单后可以在
resources/mds/docs
中新建doc_link
中指定的md文件,然后进行文档的编写
api接口文档的编写
在resources/mds/apidocs
中创建你的md文件,如demo.md
,加入你需要的内容,
然后到app/Http/Controllers/Docs/LaravelApiDocController.php
的index_md
中加入数据即可访问,例如:
private function index_md()
{
return [
[
'name' => 'apidoc_html',
'doc_link' => 'apidoc_html.md',
//可自行修改你的$this->host来使用你自己定义的访问地址
'url' => $this->host.'apidoc/html',
'request_type' => 'get',//请求方式 get或者post
//请求参数
'params'=>[
'name'=>'apidoc_html.md',
]
],
[
'name' => 'demo',
'doc_link' => 'demo.md',
'url' => $this->host.'apidoc/html',
'request_type' => 'get',//请求方式 get或者post
//给定一些需要请求的参数
'params'=>[
'name'=>'',
'user_id'=>'',
]
],
];
}
然后访问/apidoc
,即可看到效果
点击提供的demo:apidoc_html
,即可看到上面的请求路径和需要的请求参数,以及下面的参数文档
点击发送请求
按钮,可以执行ajax请求,如果接口没有问题的话,就会返回ajax数据了
这个时候点击生成文档
,会打开一个markdown
的编辑框和右侧的效果图,该界面获取了当前点击页面
中定义的请求路径,参数,返回值等,在预览效果中你可以修改接口人
,参数说明
中对每个参数进行说明,
以及返回值的说明等,然后点击生成
按钮,会根据你定义的$this->mds_path
.你配置的doc_link
,
如:resources/mds/apidocs/demo.md
,来产生文件
laravel_doc.php
配置文件说明
//laravel-doc的名字
'name' => 'Laravel-doc',
//用在了定义撰写接口人的名字
'author' => env('DOC_AUTHOR','foryoufeng'),
//接口请求发送了这个token
'token' => env('DOC_TOKEN','doc'),
//做国际化时可以用到
'languages'=>[
'search'=>'搜索',
'search_result'=>'搜索结果',
'project_doc'=>'项目文档',
'doc_name'=>'文档名称',
'install'=>'安装',
'how_use'=>'使用说明',
'request_type'=>'http请求方式',
'request_url'=>'请求地址',
'send_request'=>'发送请求',
'generate_doc'=>'生成文档',
'welcome_use'=>'欢迎使用',
'param'=>'参数',
'value'=>'值',
'generate'=>'生成',
]
进阶
如果你的项目比较小,只用写一个文档和一个api接口文档,那么在app/Http/Controllers/Docs/LaravelApiDocController.php
和app/Http/Controllers/Docs/LaravelDocController.php
中加入你的文档应该基本满足要求
如果有多个项目,可以复制app/Http/Controllers/Docs
、resources/views/docs
,可以在resources/mds/
目录中新建你准备写文档的目录
然后在路由文件中定义好需要的路由,需要复制下面的这些路由
//doc route
Route::group(['namespace'=>'Docs'],function (){
Route::get('doc', 'aaa@qq.com')->name('doc.index');
//md文件返回到html
Route::get('doc/html', 'aaa@qq.com')->name('doc.html');
Route::get('apidoc', 'aaa@qq.com')->name('doc.apidoc');
//md文件返回到html
Route::get('apidoc/html', 'aaa@qq.com')->name('doc.apidoc.html');
//预览api文档
Route::post('apidoc/markdown', 'aaa@qq.com')->name('doc.apidoc.markdown');
//生成api文档
Route::post('apidoc/save', 'aaa@qq.com')->name('doc.apidoc.save');
});
可以修改config/laravel_doc.php
中的languages
来更换语言,默认提供的是中文
在config/laravel_doc.php
中有一个token
的配置,接口做ajax请求时在header
中带了Access-Token
,接口可以根据这个配置,
做一个中间件
的处理,比如使用指定的token
就可以获取对应用户的信息,进行接口的请求和赋值等
- tips
项目为了通用,我并没有提供中间件进行文档和接口的拦截,出于安全考虑,建议使用者可以根据自身需求编写中间件进行文档的保护
上一篇: GC垃圾回收
下一篇: php实例化对象的实例方法
推荐阅读
-
初识Laravel_PHP
-
#sphinx#生成html文档_html/css_WEB-ITnose
-
韩顺平_PHP软件工程师玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理
-
java 实现将一个string保存到txt文档中
-
扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题
-
Laravel模版中变量未定义 直接崩溃,但是ThinkPHP模版中变量未定义就可以正常执行
-
javascript - laravel和ant.design的问题
-
有那些 像 laravel 的 migration 管理 数据库的工具?
-
Mongodb存储读取Word文档
-
Laravel自学第一课:laravel下载与装配