rips / connector-bundle
RIPS API Connector bundle for Symfony
Requires
- ext-json: *
- rips/connector: ^3.4
This package is auto-updated.
Last update: 2024-09-19 22:50:34 UTC
README
这是一个围绕 RIPS Connector package 的 Symfony bundle 包装器。这个库提供了访问 RIPS 和其所有功能的简单方式。
安装
使用 composer 包含该包
composer require rips/connector-bundle:~3.4
或者将以下内容添加到 composer.json 中并运行 composer update
。
"rips/connector-bundle": "~3.4"
此库旨在用于 Symfony 应用程序,但也可以单独使用。如果与 Symfony 一起使用,连接器包的安装应自动在 bundles.php
文件中创建一个条目,如下所示
return [
// ...
RIPS\ConnectorBundle\RIPSConnectorBundle::class => ['all' => true],
// ...
];
此外,您还需要在 app/config/rips_connector.yaml
中添加配置设置(有关配置选项列表,请参阅 rips/connector 读取说明)。如果您不使用 Symfony,可以通过 APIService
构造函数指定选项。
rips_connector:
base_uri: 'https://:8080'
email: 'email'
password: 'password'
用法
一个基本的示例,用于获取所有用户的列表的命令行应用程序,不使用 Symfony,如下所示
<?php
include 'vendor/autoload.php';
use RIPS\ConnectorBundle\Services\APIService;
use RIPS\ConnectorBundle\Services\UserService;
// Create an API service object that gets passed to all other services
$apiService = new APIService(
'username',
'password',
[
"base_uri" => 'https://:8080'
]
);
$userService = new UserService($apiService);
// Get all users
$users = $userService->getAll()->getUsers();
foreach ($users as $user) {
echo $user->getEmail() . "\n";
}
该包可以轻松集成到像这样的 Symfony 应用程序中
<?php
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use RIPS\ConnectorBundle\Services\UserService;
use RIPS\ConnectorBundle\InputBuilders\UserBuilder;
use RIPS\Connector\Exceptions\ClientException;
use RIPS\Connector\Exceptions\ServerExecption;
class DefaultController extends Controller
{
/** @var UserService */
protected $userService;
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function indexAction()
{
try {
// Get all users
$users = $this->userService->getAll()->getUsers();
// Add a new user
$response = $this->userService->create(
new UserBuilder([
'email' => 'test@ripstech.com',
'plainPassword' => '***********'
])
)->getResponse();
} catch (ClientException $e) {
// 4** error
} catch (ServerException $e) {
// 5** error
}
return $this->render('default/index.html.twig', ['users' => $users]);
}
}
架构
本节包含该包使用的架构概述。
服务
服务是围绕 RIPS-Connector 库的主要包装器。在 APIService 中初始化 RIPS\Connector\API
类,所有其他服务都期望注入 APIService(请参阅 services.yml
)。
每个服务类都应该在 RIPS-Connector 中有一个相应的 Requests
类。为每个 Requests
类在 APIService
类中添加了一个访问器方法,以便更容易访问。
目录结构试图遵循 API 控制器的目录结构。
实体
API 返回的数据不是返回 stdClass
对象或数组,而是映射到自定义 Entity
类,这些类由响应类返回。由服务类返回响应。
实体只是具有所有属性获取器/设置器的自定义类。在某些情况下,它们将具有嵌套实体。例如:`UserEntity` 将有一个嵌套的 `OrgEntity`,因为用户属于一个组织。强烈建议在访问它们之前检查是否存在子对象。
填充器
在 connector-bundle 中的填充器用于使用从 RIPS Connector 库返回的数据填充自定义 Entity
类。它们期望 stdClass
对象(来自 RIPS Connector)映射到实体类。
在某些情况下,您将具有嵌套对象(例如,`UserEntity` 包含嵌套的 `OrgEntity`),在这种情况下,最好在 `UserHydrator` 中重用 `OrgHydrator` 以填充嵌套的 `OrgEntity` 对象。
输入构建器
记住一个请求可能具有的所有预期输入参数可能很困难。为此,创建了具有所有预期参数作为属性以及获取器/设置器的 InputBuilder
类。还可以将数据数组传递给构造函数,这将填充相应的字段。