Files
phalapi-pro/public/wiki/2x-api-new-namespace.md
2022-03-21 11:16:38 +08:00

4.0 KiB
Raw Permalink Blame History

3.9 新增接口目录教程

添加一个新的接口目录,可以先参考如何增加一个顶级命名空间?

下面以添加Teacher接口命名空间为例对应teacher目录进行讲解其他目录名称相应改成自己的即可。

第1步更新composer

修改 根目录的composer.json 文件找到autoload里的psr-4在前面添加一行

            "Teacher\\": "src/teacher",

前面是接口命名空间名称,后面是对应的文件目录,注意大小写。

添加后完整的部分是:

	"autoload" : {
		"files" : [
			"src/app/functions.php"
		],
		"psr-4" : {
            "Teacher\\": "src/teacher",
			"App\\" : "src/app",
			"Platform\\" : "src/platform",
            "Task\\": "src/task",
            "Base\\": "src/base",
            "Mall\\": "src/mall",
			"Admin\\" : "src/admin"
		}
	}

然后更新命名空间的映射关系,执行命令:

composer dumpautoload

第2步添加接口目录

根据上面的配置以及PhalApi的规范接口目录放置在src目录里这里需要添加的接口目录是src/teacher

随后,可以继续添加 src/teacher/Api目录放置你的接口PHP代码文件。

第3步添加接口访问入口文件

在接口大师,每个接口目录,即每个接口命名空间,都需要提供独立、配套、对应的外部访问入口。

针对这里的Teacher把原来的开发平台的入口文件 ./public/api/platform.php 复制一份给 ./public/api/teacher.php 修改里面的filter过滤器进行重新注册。

// 切换你的过滤器
// $di->filter = new \Platform\Common\Filter();
$di->filter = new \Teacher\Common\Filter();

第4步实现你的过滤器

添加src/teacher/Common目录,并新建src/teacher/Common/Filter.php文件,放置以下代码,并根据自己的需要调整逻辑。

<?php
namespace Teacher\Common;

use Base\Common\Filter as BaseFilter;
use PhalApi\Exception\BadRequestException;

class Filter extends BaseFilter {

    public function check() {
        parent::check();
        
        // 实现你自己的检测逻辑
    }
}

第5步修改接口文档的路径

打开修改 ./src/view/docs/api_desc_tpl.php接口详情模板文件,添加接口命名空间和访问路径的映射。

$uriMap = array(
    'Teacher' => '/api/teacher.php', // 添加新映射
    'Admin' => '/api/admin.php',
    'App' => '/api/app.php',
    'Platform' => '/api/platform.php',
    'Task' => '/api/task.php',
);

就可以解决访问路径不对的问题,例如:

此外,还可以修改 ./language/zh_cn/common.php 翻译文件,最后添加一行(注意双斜杠):

'Teacher\\' => '教师平台',

解决接口列表页的名称显示问题。例如:

第6步接口列表文档的显示控制

例如,有些新加的接口目录,只是内部使用的,那么可以隐藏接口列表的入口。

如果想控制新接口目录在接口列表的显示,可以修改 ./public/docs.php 文件,找到以下代码,并在最后添加自己的接口命名空间,就可以隐藏。

    // 对外排除的命名空间,如果需要增加项目,需要在此追加
    $globalExcludeNamespaces = array('Task', 'Platform', 'Admin', 'Teacher'); // 在最后追加

第7步开始使用新目录

到这里,就可以在新目录添加和开发自己的接口。

剩下的事情,接口大师会自动帮你完成,包括接口的权限以及分配等。