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.phpindex_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,即可看到效果

链接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取码:x2p5

免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群 群号518475424

控制器说明

默认文档的路径

$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.phpindex_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.phpapp/Http/Controllers/Docs/LaravelDocController.php
    中加入你的文档应该基本满足要求

如果有多个项目,可以复制app/Http/Controllers/Docsresources/views/docs,可以在resources/mds/目录中新建你准备写文档的目录
然后在路由文件中定义好需要的路由,需要复制下面的这些路由

//doc route

Route::group(['namespace'=>'Docs'],function (){

    Route::get('doc', 'LaravelDocController@index')->name('doc.index');

    //md文件返回到html

    Route::get('doc/html', 'LaravelDocController@html')->name('doc.html');

    Route::get('apidoc', 'LaravelApiDocController@index')->name('doc.apidoc');

    //md文件返回到html

    Route::get('apidoc/html', 'LaravelApiDocController@html')->name('doc.apidoc.html');

    //预览api文档

    Route::post('apidoc/markdown', 'LaravelApiDocController@markdown')->name('doc.apidoc.markdown');

    //生成api文档

    Route::post('apidoc/save', 'LaravelApiDocController@save')->name('doc.apidoc.save');

});
   
  • 国际化

    可以修改config/laravel_doc.php中的languages来更换语言,默认提供的是中文

  • 接口拦截

    config/laravel_doc.php中有一个token的配置,接口做ajax请求时在header中带了Access-Token,接口可以根据这个配置,
    做一个中间件的处理,比如使用指定的token就可以获取对应用户的信息,进行接口的请求和赋值等

  • tips

项目为了通用,我并没有提供中间件进行文档和接口的拦截,出于安全考虑,建议使用者可以根据自身需求编写中间件进行文档的保护

Laravel文档工具的更多相关文章

  1. 生成chm文档工具- Sandcastle -摘自网络

    Sandcastle是微软官方的文档生成工具,NDoc开发停止后,这个貌似也是唯一的一个这方面的工具.它从dll文件及其xml注释文件能够 生成完整的帮助文档,支持多种生成格式(Helpe1x:chm ...

  2. API文档工具-Swagger的集成

    最近安装了API文档工具swagger,因为Github上已有详细安装教程,且安装过程中没有碰到大的阻碍,所以此文仅对这次安装做一份大致记录 相关网站 Swagger 官方地址: http://swa ...

  3. Javascript自动化文档工具JSDuck在Windows下的使用心得

    作者: zyl910 一.工具比较 为了让前端JavaScript程序更具可维护性,更利于团队开发,文档非常重要.此时便需要使用自动化文档工具了. 我对比了各种JavaScript自动化文档工具,发现 ...

  4. Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2

    1. 引言 各位在开发的过程中肯定遇到过被接口文档折磨的经历,由于 RESTful 接口的轻量化以及低耦合性,我们在修改接口后文档更新不及时,导致接口的调用方(无论是前端还是后端)经常抱怨接口与文档不 ...

  5. JavaScript(3)——文档工具

    文档工具 LEARN HTML = 教程 HTML REFERENCE = 字典 HTML + CSS + JAVASCRIPT = DYNAMIC  HTML 推荐浏览器: Chrome浏览器(有丰 ...

  6. ShowDoc,APIDoc,可道云API,语雀-适合IT企业的文档工具

    ShowDoc,APIDoc,可道云API,语雀-适合IT企业的文档工具 一.ShowDoc官方文档及说明 1.1 它可以用来做什么 1.2 它都有些什么功能 1.3 使用在线的ShowDoc 1.4 ...

  7. docsify网站文档工具用法总结

    docsify , 网站文档动态生成工具,类似gitbook 特性 无需构建,写完文档直接发布 容易使用并且轻量 (~19kB gzipped) 智能的全文搜索 提供多套主题 丰富的 API 支持 E ...

  8. 开源的API文档工具框架——Swagger简介

    初次接触Swagger是在2017年5月,当时公司正好要对整套系统架构进行重新设计,有同事推荐用这个技术框架来规范后台接口的API文档.当时因为架构重构,涉及改造的技术点太多,一时也就没太多精力,把S ...

  9. Sandcastle Help File Builder(.NET帮助文档工具)的版本选择心得——支持VS2010至VS2015,高版本项目文件问题

    作者: zyl910 一.缘由 "Sandcastle Help File Builder"(简称SHFB)是一个很好用.NET 帮助文档生成工具. 但它的每个版本支持的VS版本范 ...

随机推荐

  1. Libs - 软件下载网站

    下载首页 > 网络工具 > FTP-工具 > 软件列表 http://down.tech.sina.com.cn/list/29_4_9.html

  2. PIE SDK 精度分析(分类后处理)

    1.算法功能简介 遥感图像分类精度分析通常把分类图与标准数据进行比较,然后用正确分类的百分比来表示分类的精度. PIE SDK支持算法功能的执行,下面对精度分析算法功能进行介绍. 2.算法功能实现说明 ...

  3. Mac系统docker初探

    最近把工作环境要切到mac中,由于一直想看看docker是怎么回事,以前在win和linux下面都没有用起来,这次在mac中决定试一把,尝试下新的环境部署方式. 安装docker mac中,直接有类似 ...

  4. python--线程和进程的初识

    一.进程与线程之间的关系 1.线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除. 2.线程可与属于同一进程的其它线程共享 ...

  5. es6的let与const

    es6新增命令let,用于声明变量,他与var的不同主要有三点: let有块级作用域 let没有变量提升 同级作用域内,let不可以重复定义 let有块级作用域: es5 for(var i=0;i& ...

  6. Delphi中destroy, free, freeAndNil, release用法和区别

    Delphi中destroy, free, freeAndNil, release用法和区别 1)destroy:虚方法 释放内存,在Tobject中声明为virtual,通常是在其子类中overri ...

  7. Memcache内存缓存框架

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10923221.html 一:Memcache是什么,为什么要用它 MemCache是一个高性能.“分布式”的 ...

  8. 'root'@'localhost'不能登录问题

    鉴于我在遇到这个问题时,在网上搜索到几十个答案都是进行更改密码解决该问题,然并没有卵用.最后还是让小编找到了解决方法,希望大家遇到该问题时能够节省时间.解决方法如下:   #mysql -u root ...

  9. 逆向破解之160个CrackMe —— 022

    CrackMe —— 022 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  10. 全局的 axios 默认值

    (1)全局的 axios 默认值 axios.defaults.baseURL = 'https://api.example.com';/*默认请求路径*/ axios.defaults.header ...