neilherbertuk / celcatwebapi
Laravel Celcat Web API 集成
Requires
- guzzlehttp/guzzle: ^6.3
- laravel/framework: 5.*
Requires (Dev)
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2021-02-11 18:33:25 UTC
README
本包提供对 Celcat Web API 的访问,该 API 在 Celcat Wiki - Web API 页面上有文档说明。本包只在 Celcat 7 上进行了测试,其中 WebAPI 处于测试阶段。
安装
使用 composer 安装此包
$ composer require neilherbertuk/celcatwebapi:dev-master
如果您正在使用 Laravel 5.5+,包自动发现应为您注册 CelcatWebAPIServiceProvider::class 和 CelcatWebAPI 门面。
如果您正在使用 Laravel 5.4 或更低版本,您需要在 config\app.php 文件中注册服务提供者和门面。
服务提供者
将以下内容添加到 config\app.php 文件中的 providers 列表
neilherbertuk\celcatwebapi\CelcatWebAPIServiceProvider::class,
门面
将以下内容添加到 config\app.php 文件中的 aliases 列表
'CelcatWebAPI' => neilherbertuk\celcatwebapi\Facades\CelcatWebAPI::class,
配置文件
如果您想编辑配置文件,您需要发布它。所有配置项都可以使用 .env 文件设置。
$php artisan vendor:publish
配置
可以在您的 config\celcat.php 文件中设置配置,或者通过您的 .env 文件。
为了与 Celcat Web API 通信,必须提供以下内容
ServerAddress - Celcat Web API 的地址,这必须是 https,不应包含尾部斜杠 (/)
CELCAT_WEB_API_SERVER_ADDRESS=https://:5000/api
APICode - 生成并放入您的 appsettings.production.json 文件中的 API 代码,如 Celcat Wiki - Web API - Security 页面上所述。
CELCAT_WEB_API_APICODE=123ABCDEfGHijKL4
VerifySSL - 是否验证服务器 SSL 证书
CELCAT_WEB_API_VERIFY_SSL=true
PEM - 如果在 Celcat Web API 服务器上使用自签名证书,则证书 PEM 的位置。
CELCAT_WEB_API_PEM=storage/CelcatWebAPI/cert.pem
Debug - 启用详细日志记录
CELCAT_WEB_API_DEBUG=false
Proxy - 如有需要,则代理服务器地址
-- Used for both http and https --
CELCAT_WEB_API_PROXY=http://localproxy:8080
-- or --
CELCAT_WEB_API_PROXY_HTTP=http://localproxy:8080
CELCAT_WEB_API_PROXY_HTTPS=https://localproxy:8080
-- Bypass proxy for addresses seperated by spaces --
CELCAT_WEB_API_PROXY_BYPASS=*.domain.com
用法
可以通过 CelcatWebAPI Laravel 门面或使用 app()->make('CelcatWebAPI') 来访问此包的所有功能。为了统一和方便,所有使用示例都将通过 Laravel 门面访问包。
可用资源
已实现以下 API 资源
| 资源名称 |
|---|
房间 |
组 |
学生 |
学生会员 |
您可以在上面列出的任何可用资源上使用以下任何方法
获取全部
使用资源的 getAll() 方法将返回所有结果。
CelcatWebAPI::resource()->getAll();
GetAll 可选:pageSize - 每次请求获取的条目数
默认情况下,getAll()将使用pageSize为1,000,并根据需要执行多次请求以获取所有结果。您可以通过将整数传递给getAll()运算符来更改pageSize,以增加或减少请求的数量。
示例
以下将每次API调用请求100个结果,直到收到所有结果。
CelcatWebAPI::resource()->getAll(100);
Get
在资源上使用get()方法默认将返回前50个结果。
示例
CelcatWebAPI::resource()->get();
结果
array:3 [▼
"pagination" => array:3 [▼
"TotalRows" => 200
"TotalPages" => 4
"CurrentPage" => 0
]
"data" => array:1 [▼
0 => array:2 [▼
"id" => 0
"name" => "Some Name"
]
1 => array:2 [▼
"id" => 1
"name" => "Some Other Name"
]
2 => array:2[...]
3 => array:2[...]
...
49 => array:2[...]
]
]
Get 可选:pageSize - 返回的结果数
您可以通过在方法签名中包含一个整数来更改返回的结果数。
示例
以下将返回前100个结果。
CelcatWebAPI::resource()->get(100);
结果
array:3 [▼
"pagination" => array:3 [▼
"TotalRows" => 200
"TotalPages" => 2
"CurrentPage" => 0
]
"parameters" => array:2 [▼
"pageSize" => 100
"page" => 0
]
"data" => array:1 [▼
0 => array:2 [▼
"id" => 0
"name" => "Some Name"
]
1 => array:2 [▼
"id" => 1
"name" => "Some Other Name"
]
2 => array:2[...]
3 => array:2[...]
...
99 => array:2[...]
]
]
Get 可选:page - 要返回的结果页
如果总结果数超过返回的数量,结果将分页显示。您可以使用Where()运算符请求页面。
示例
以下将返回第2页或结果51 - 100。
CelcatWebAPI::resource()->where(['page' => 2])->get();
结果
array:3 [▼
"pagination" => array:3 [▼
"TotalRows" => 200
"TotalPages" => 4
"CurrentPage" => 2
]
"parameters" => array:2 [▼
"page" => 2
]
"data" => array:1 [▼
50 => array:2 [▼
"id" => 0
"name" => "Some Name"
]
1 => array:2 [▼
"id" => 1
"name" => "Some Other Name"
]
2 => array:2[...]
3 => array:2[...]
...
99 => array:2[...]
]
]
以下将返回第3页或结果301 - 400。
CelcatWebAPI::resource()->where(['page' => 3])->get(100);
First
在资源上使用first()方法将返回第一个结果。
CelcatWebAPI::resource()->first();
array:3 [▼
"pagination" => array:3 [▼
"TotalRows" => 2103
"TotalPages" => 2103
"CurrentPage" => 0
]
"parameters" => array:2 [▼
"pageSize" => 1
"page" => 0
]
"data" => array:1 [▼
0 => array:2 [▼
"id" => 0
"name" => "Some Name"
]
]
]
Where
where运算符允许您定义查询的参数。在get和getAll运算符上设置参数已被移除。
CelcatWebAPI::resource()->where(['uniqueName' => '1234'])->get();
array:3 [▼
"pagination" => array:3 [▼
"TotalRows" => 2103
"TotalPages" => 2103
"CurrentPage" => 0
]
"parameters" => array:2 [▼
"pageSize" => 1
"page" => 0
]
"data" => array:1 [▼
0 => array:2 [▼
"id" => 0
"uniqueName" => "1234"
"name" => "Some Name"
]
]
]