自动生成的url不对?

HG小于 1 分钟

自动生成的url不对?

默认的自动生成接口url规则是将控制器目录地址+方法名,并根据配置过滤及处理指定的key来实现的,如默认的生成规则无法满足您项目的需求,可通过配置自定义处理函数来自行实现。

如下举例一些常见的处理方法:

1、ThinkPHP开启控制器后缀

当ThinkPHP如下配置开启了控制器后缀的配置,导致自动生成的url比真实的url多出了Controller

// config/route.php

// 是否使用控制器后缀
'controller_suffix'     => true,

解决方法:

// config/apidoc.php
//...
'auto_url' => [
        // ...
        // 处理url中每个key
       'handle_key'=>function($key){
           return str_ireplace('Controller', "", $key);
       }
]

2、ThinkPHP多级路由的分割符

有的同学使用多级路由时,分割符为.并不是/分割的,可通过自定义生成规则实现

解决方法:

// config/apidoc.php
//...
'auto_url' => [
        // ...
        // 自定义url生成方法
        'custom' =>function($path,$method,$url){
            $urlArr    = explode("/", $url);
            $classPathArr = [];
            for ($i = 2; $i < count($urlArr)-1; $i++) {
                $classPathArr[]=$urlArr[$i];
            }
            $classPath = implode('.', $classPathArr);
            return "/".$urlArr[1]."/".$classPath."/".$method;
        },
]