Laravel

Lumne安装Apidoc的问题处理

文 / 管理员 来源 / 原创 阅读 / 829 9月前

Apidoc官网文档(传送门 https://docs.apidoc.icu

Apidoc是一个通过解析注解生成Api接口文档的PHPcomposer扩展,虽然兼容Laravel、ThinkPHP、Hyperf、Webman等框架,但是在使用Lumen开发的过程中,因为Lumen框架阉割的比较厉害,有一些方法被删除,故造成了ApiDoc无法使用。为此专门进行研究,找到问题根源进行简单的处理,若您有更好的解决方法,可以提供一下,参考优化该文章。

Lumen版Apidoc安装

1、安装插件

    进入项目根目录,执行如下命令:

composer require hg/apidoc

2、手动添加apidoc.php配置文件

手动将 /vendor/hg/apidoc/src/config.php 拷贝到/config/目录下,并重命名为apidoc.php

3、在应用初始化时注册相关服务

/bootstrap/app.php 中添加下面一行代码,

$app->register(hg\apidoc\providers\LaravelService::class);

4、修改vendor文件内容

手动配置 /vendor/laravel/lumne-framework/src/Routing/Router.php,将下面的代码,直接复制粘贴即可。(目前的问题是,若进行composer安装或更新,我们手动添加的代码,可能被重置

/**
 * Register a new route responding to all verbs.
 *
 * @param  string  $uri
 * @param  array|string|callable|null  $action
 * @return \Illuminate\Routing\Route
 */
public function any($uri, $action = null)
{
    $this->addRoute(['GET','POST','PUT'], $uri, $action);
    
    return $this;
}

/**
 * Get or set the middlewares attached to the route.
 *
 * @param  array|string|null  $middleware
 * @return $this|array
 */
public function middleware($middleware = null)
{
    if (is_null($middleware)) {
        return (array) ($this->action['middleware'] ?? []);
    }
    
    if (! is_array($middleware)) {
        $middleware = func_get_args();
    }
    
    foreach ($middleware as $index => $value) {
        $middleware[$index] = (string) $value;
    }
    
    $this->action['middleware'] = array_merge(
        (array) ($this->action['middleware'] ?? []), $middleware
    );
    
    return $this;
}

5、配置异常响应

    由于框架会对全局异常进行处理,如apidoc的异常未被正确响应,会导致页面打不开或报错,配置以下异常处理来解决问题。

    修改文件app/Exceptions/Handler.php,增加一下代码:

public function register()
{
    $this->reportable(function (Throwable $e) {
        if ($e instanceof \hg\apidoc\exception\HttpException) {
            return abort(
                $e->getStatusCode(),
                $e->getMessage()
            );
        }
    });
}

6、添加前端页面

下载完成后解压,将apidoc文件夹拷贝到你的项目 public 目录下


打开浏览器访问 http://你的域名/apidoc/,出现接口文档页面,表示安装。

评论

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

站点声明:本站转载作品版权归原作者及来源网站所有,原创内容作品版权归作者所有,任何内容转载、商业用途等均须联系原作者并注明来源。

© 2020-2030 qdxcy.cn 版权所有京ICP备13045222号
相关侵权、举报、投诉及建议等,请发E-mail:2323946929@qq.com

友情链接: YzmCMS官方网站 YzmCMS官方论坛