gamingsolved / paperspace-api-client
Requires
- php: >=5.5
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.0
- phpunit/phpunit: ^6.0
- squizlabs/php_codesniffer: ~3.0
This package is not auto-updated.
Last update: 2024-09-29 02:34:12 UTC
README
版权(c)2017 Manuel Kiessling,根据MIT许可协议。
关于
本项目维护与Paperspace API不官方兼容的规格,并使用这些规格基于Guzzle自动生成PHP客户端,可用于与API交互。
生成的客户端作为Packagist库提供给Composer生态系统。
您可以在此处交互式探索Paperspace API v0.1.3的Swagger文档。
安装
只需运行composer require gamingsolved/paperspace-api-client即可安装最新版本。
使用方法
在您的代码中,您可以使用API客户端,如下所示。示例假设您想使用Paperspace API的0.1.3版本。
<?php
require_once('<path-to-vendor-folder>/autoload.php');
use Gamingsolved\Paperspace\Api\Client\Version0_1_3 as PaperspaceApiClient;
$config = PaperspaceApiClient\Configuration::getDefaultConfiguration();
$config->setApiKey('X-API-Key', 'your-api-key-here');
$createMachineParams = new PaperspaceApiClient\Model\CreateMachineParams();
$createMachineParams->setRegion('East Coast (NY2)');
$createMachineParams->setMachineType('Air');
$createMachineParams->setSize(50);
$createMachineParams->setBillingType('hourly');
$createMachineParams->setMachineName('My first machine');
$createMachineParams->setTemplateId('t23ol2r'); // Windows 10 (Server 2016) Quadro - Licensed
$machinesApiClient = new PaperspaceApiClient\Api\MachinesApi(null, $config);
try {
$result = $machinesApi->createMachine($createMachineParams);
print_r($result);
} catch (\Exception $e) {
echo 'Exception when calling MachinesApi->createMachine: ', $e->getMessage(), PHP_EOL;
}
在src-generated/0.1.3/docs/Api,您可以找到0.1.3 API客户端的完整文档,其中包含更多示例。
匹配项目版本和Paperspace API版本
使用以下表格作为参考,了解本项目支持哪些版本的Paperspace API
变更日志
本项目的所有重大更改都将在此部分记录。
格式基于Keep a Changelog,本项目遵循语义化版本控制。
未发布
0.1.3 - 2017-08-20
修复
- machines/show 响应类型 (#3)
0.1.2 - 2017-08-15
新增
- 变更日志
更改
- 在API定义中删除了Region的冗余
修复
- templates/list 过滤 (#1)
- machines/list 过滤 (#2)
0.1.1 - 2017-08-14
更改
- 将Composer依赖项提升到最新版本
- 改进API定义元数据
0.1.0 - 2017-08-14
更改
- 完成第一次Packagist发布
如何修改和扩展API规范
本项目尽可能自动生成提供的PHP API客户端(见下文)。为此,本项目管理基于不同版本的Paperspace API的Open API规范/ Swagger定义。由于目前没有(已知)直接根据Paperspace API Node.js客户端代码生成这些定义的方法,因此Swagger定义是手动创建和更新的。
为此,每个API调用的代码文档用作参考——例如,创建机器API调用在官方Node.js API客户端代码https://github.com/Paperspace/paperspace-node/blob/v0.1.3_work/lib/machines/create.js中定义,其codedoc块用作api-definitions/0.1.3/paperspace-api-swagger-definition.json中定义的参考。
API规范是按API版本定义的,即每个Paperspace API版本都有一个规范(每个版本在api-definitions下有一个文件夹)。
在风格、命名和结构方面,以下是一些创建API定义的指南,这些定义既要忠实于API,又能生成易于使用的PHP客户端
- 顶级客户端结构 == 顶级API结构:
machines->MachinesApi - 通过
operationId进行流体方法签名:MachinesApi->createMachine(),MachinesApi->listMachines() - Swagger定义遵循整体命名规范:
MachinesApi::createMachine(new CreateMachineParams())
如何自动生成API客户端
PHP API客户端使用swagger-codegen v2.3.0生成。
定义文件api-definitions/<api-version>/paperspace-api-swagger-definition.json作为输入规范,生成的源代码放置在src-generated/<api-version>。
为了(重新)生成所有客户端的代码,按照以下步骤进行
cd
git clone https://github.com/swagger-api/swagger-codegen
cd swagger-codegen
git checkout 2.3.0
mvn clean package -DskipTests
cd <folder with this README.md file>
./bin/generate-clients.sh ~/swagger-codegen/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar
附加说明
本项目既不与Paperspace公司有关联,也不受其支持。