getinstance / api_util
核心 getinstance API 代码
Requires
- aura/cli: ~2.1.0
- dflydev/fig-cookies: ^3.0
- getinstance/commons: 1.*
- guzzlehttp/guzzle: ^7.5
- odan/session: ^6.1
- php-di/php-di: ^7.0
- phpmailer/phpmailer: ^6.9
- slim/psr7: ^1.6
- slim/slim: ^4.11
- slim/twig-view: ^3.3
- symfony/http-kernel: 4.*
- symfony/psr-http-message-bridge: ^2.1
Requires (Dev)
- dev-master
- v7.0.3
- v7.0.2
- v7.0.1
- v7.0.0
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.0.0
- v4.2.0
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.2
- v4.0.1
- v3.0.1
- v3.0.0
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.8.0
- v1.7.0
- v1.6
- v1.5
- v1.0.4
- v1.0.3
- v1.0.1
- v1.0.0
- dev-develop
- dev-support-email-name
- dev-minor-tweaks-for-static-analysis-compliance
- dev-update-index-skel-twig2
- dev-slim-upgrade
- dev-fix-v2_0_4
- dev-feature/codegen
- dev-feature/composer-migrate
This package is auto-updated.
Last update: 2024-09-13 02:58:59 UTC
README
基于 Slim(前几版主要基于 Silex 和 Symfony 组件)构建的 Web 和 REST 工具
初始安装
composer require getinstance/api_util
生成骨架
您不需要这样做,但这可以节省时间。
骨架:服务器模式
待办事项 - 创建仅包含核心的生成。
api_util
包含一些骨架生成工具。这个工具生成核心组件和一个 API 端点
$ php ./vendor/getinstance/api_util/bin/tools.php genendpoint dashserver getops\\dashboard\\server hello world,universe
genendpoint
是子命令dashserver
是应用名称。它应该仅包含字母数字字符,不允许使用符号、标点符号或空格。myorg\\dashserver
是包名(需要双反斜杠:包将作为myorg\dashserver
在命名空间和 use 语句中使用呈现)hello
是端点名称 -- 因此我们将调用GET /hello
、POST /hello
等world,universe
是与端点相关的字段。字段之间不应该有任何内容,只有逗号。
此命令将生成控制器、命令、模型类、映射器。它将为 Mariadb 生成 SQL。这将需要调整,因为它没有添加索引,并且只使用 VARCHAR 数据类型。
您可以多次运行此工具以生成不同的端点,系统将拒绝覆盖现有文件,而是将它们写入本地的 tmp/
目录。然后您可以剪切和粘贴生成的内容。
待办事项 - 改进工具以支持多个端点的描述符。允许将新端点注入现有系统(可能使用源中的注释标记)。
在上面的例子中 genendpoint
写了
/scripts/*
-- 模式和小脚本- 特别是这里看看
create-db.sql
和create-schema.sql
。第一个创建数据库实例和相关数据库用户。第二个是第一个脚本生成的数据库模式定义。
- 特别是这里看看
web/index.php
-- 系统的入口点。src/controller/Controller.php
-- 实现路由的InitWareInterface
组件。在主要的index.php
中,向api_util
FrontController
组件中添加了这个实例,该组件处理应用程序的生命周期。api_util
使用 Slim 的路由组件
src/command/*.php
类用于实现获取、PUT、POST、DELETE 端点以操作 Hello 数据。src/model/Hello.php
-- 封装端点数据的模型类。src/model/HelloMapper.php
-- 将 Hello 数据写入和从数据库检索dockerbuild/
和docker-compose.yaml
-- 运行项目在 Docker 容器中的文件
骨架:Web 模式
api_util
起初是作为生成微服务 API 的快速方式编写的。然而,它也被证明作为 Web 微框架也很有用。因此,它已经发展到支持许多与 Web-UI 相关的工具。
以下是生成 Web UI 骨架的方法
php ./vendor/getinstance/api_util/bin/tools.php genweb dashfe getops\\dashboard\\fe
此命令生成与 genendpoint
命令相同的核心元素。不过,它创建了一个单独的控制器命令文件:src/command/Main.php
。它还生成一个 Twig 模板。
以下是生成文件的概述
/scripts/*
-- 模式和小脚本web/index.php
-- 系统的入口点。src/controller/Controller.php
-- 实现路由的InitWareInterface
组件。在主要的index.php
中,向api_util
FrontController
组件中添加了这个实例,该组件处理应用程序的生命周期。api_util
使用 Slim 的路由组件
src/command/Main.php
-- 一个中央控制器类,可以根据需要扩展新的控制器方法。dockerbuild/
和docker-compose.yaml
-- 运行项目在 Docker 容器中的文件
在 Docker 中运行骨架
无论您是生成了一个API项目还是Web项目,如果您已安装Docker,则应能够以相同的方式运行一个测试实例。
docker compose up
这将生成一个运行在PHP内置服务器上并在localhost端口8080可访问的实例。如果我们经常这样做,您可能希望创建一个API实例和一个Web实例,它们可以协同工作。我们建议您将它们的docker-compose.yaml
文件合并为一个单一实例,该实例位于您的所有存储库之上。在这种情况下,您可能需要调整公共端口,以避免冲突。
待办事项 - 从Web生成模板中移除MariaDB容器
InitWare:路由和配置
主要控制器将调用实现getinstance\api_util\controller\InitWareInterface
的任何类。以下是这个接口
namespace getinstance\api_util\controller;
use DI\ContainerBuilder;
use Slim\App;
interface InitWareInterface
{
public function handleConfiguration(ContainerBuilder $builder, Conf $conf): void;
public function handleRouting(App $app): void;
}
您可能只需为路由创建一个实现类。您可以通过调用FrontController::addInitWare()
将其添加到系统中,在index.php
中完成此操作。
require_once __DIR__.'/../vendor/autoload.php';
use getinstance\api_util\controller\FrontController;
use sulis\admonkey\controller\Controller;
$controller = new FrontController();
$controller->addInitWare(new Controller());
$controller->init(['confpath'=>__DIR__."/../conf/", 'confname'=>'myapp']);
$response = $controller->execute();