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

120 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 3.9 新增接口目录教程
添加一个新的接口目录,可以先参考[如何增加一个顶级命名空间?](http://docs.phalapi.net/#/v2.0/autoload?id=%e5%a6%82%e4%bd%95%e5%a2%9e%e5%8a%a0%e4%b8%80%e4%b8%aa%e9%a1%b6%e7%ba%a7%e5%91%bd%e5%90%8d%e7%a9%ba%e9%97%b4%ef%bc%9f)。
下面以添加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```。
![](http://cd8.okayapi.com/yesyesapi_20210624112006_a36e48f043f5ed3e0c3091f086375334.png)
随后,可以继续添加 ```src/teacher/Api```目录放置你的接口PHP代码文件。
## 第3步添加接口访问入口文件
在接口大师,每个接口目录,即每个接口命名空间,都需要提供独立、配套、对应的外部访问入口。
针对这里的Teacher把原来的开发平台的入口文件 ./public/api/platform.php 复制一份给 ./public/api/teacher.php 修改里面的filter过滤器进行重新注册。
```php
// 切换你的过滤器
// $di->filter = new \Platform\Common\Filter();
$di->filter = new \Teacher\Common\Filter();
```
## 第4步实现你的过滤器
添加```src/teacher/Common```目录,并新建```src/teacher/Common/Filter.php```文件,放置以下代码,并根据自己的需要调整逻辑。
```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```接口详情模板文件,添加接口命名空间和访问路径的映射。
```php
$uriMap = array(
'Teacher' => '/api/teacher.php', // 添加新映射
'Admin' => '/api/admin.php',
'App' => '/api/app.php',
'Platform' => '/api/platform.php',
'Task' => '/api/task.php',
);
```
就可以解决访问路径不对的问题,例如:
![](http://cd8.okayapi.com/yesyesapi_20210624113257_7cb5e4e7d970318c077fcefe8479121d.png)
此外,还可以修改 ./language/zh_cn/common.php 翻译文件,最后添加一行(注意双斜杠):
```php
'Teacher\\' => '教师平台',
```
解决接口列表页的名称显示问题。例如:
![](http://cd8.okayapi.com/yesyesapi_20210624113515_ddb5e5d828c381a136abf1c51a355f9a.png)
## 第6步接口列表文档的显示控制
例如,有些新加的接口目录,只是内部使用的,那么可以隐藏接口列表的入口。
如果想控制新接口目录在接口列表的显示,可以修改 ```./public/docs.php ```文件,找到以下代码,并在最后添加自己的接口命名空间,就可以隐藏。
```
// 对外排除的命名空间,如果需要增加项目,需要在此追加
$globalExcludeNamespaces = array('Task', 'Platform', 'Admin', 'Teacher'); // 在最后追加
```
## 第7步开始使用新目录
到这里,就可以在新目录添加和开发自己的接口。
剩下的事情,接口大师会自动帮你完成,包括接口的权限以及分配等。