nikba / directus-api
Directus v8.8.1 API的PHP包装器
Requires
- php: ^7.4|^8.2
- ext-json: *
- guzzlehttp/guzzle: ^7.2.0
Requires (Dev)
- phpunit/phpunit: ^9.2
README
这是一个Directus v8.8.1 API的PHP包装器,它允许您轻松地从PHP应用程序中与Directus交互。
Directus是一个开源的无头CMS和API,它提供了一个简洁的界面来管理您的内容,同时允许您使用您最喜欢的前端工具和框架。
使用此API包装器,您可以编程创建、读取、更新和删除Directus中的项和集合,以及管理用户、权限和设置。
安装
您可以通过运行以下命令使用Composer安装此包
composer require nikba/directus-api
使用/示例
要开始使用此API包装器,您需要首先创建一个Nikba\Directus类的实例,传递您的Directus API URL和项目名称
创建API实例
use Nikba\Directus\Directus; /** * @param string $url * @param string $project */ $directus = new Directus('https://api.nikba.com/', 'projectname');
认证
/** * Temporary (JWT) * These tokens are generated through the /auth/authenticate endpoint (below) and have a lifespan of 20 minutes. * @param string $username * @param string $password */ $directus->authenticate('username', '********'); /** * Using Static token * Each user can have one static token that will never expire. This is useful for server-to-server communication, but is also less secure than the JWT token. * @param string $token */ $directus->token('ThIs_Is_ThE_tOkEn');
错误处理
$items = $directus->items($collection)->get(); if($directus->isError($items)) { // The request failed. }
一旦您有了客户端实例,您就可以使用它来发送API请求。
项
项是数据库中的单个数据。可以是任何东西,从文章到物联网状态检查。
/** * List the Items * @param string $collection */ $items = $directus->items($collection)->get(); /** * Fields * Optional * Control what fields are being returned in the object. * @param string $fields * _fields("fields1,field2,...") */ $items = $directus->items($collection)->_fields("field1,field2")->get(); /** * Limit * Optional * A limit on the number of objects that are returned. Default is 200 * @param integer $limit * _limit(10) */ $items = $directus->items($collection)->_limit(10)->get(); /** * Offset * Optional * How many items to skip when fetching data. Default is 0. * @param integer $offset * _offset(10) */ $items = $directus->items($collection)->_offset(10)->get(); /** * Sort * Optional * How to sort the returned items. * @param string $sort * _sort("-id,sort") */ $items = $directus->items($collection)->_sort("-id,sort")->get(); /** * Single * Optional * Return the result as if it was a single item. Useful for selecting a single item based on filters and search queries. Will force limit to be 1. * _single() */ $items = $directus->items($collection)->_single()->get(); /** * Status * Optional * Filter items by the given status. * @param string $status * _status("published,under_review,draft") */ $items = $directus->items($collection)->_status("published,under_review,draft")->get(); /** * Filter * Optional * Select items in collection by given conditions. * @param array $filter * _filter(["page_id" => $id]) */ $items = $directus->items($collection)->_filter(["page_id" => $id])->get(); /** * Retrieve an Item * @param string $collection * @param integer $id */ $item = $directus->item($collection, $id)->get(); /** * Create an Item * @param string $collection * @param array $params */ $directus->items($collection)->create([ 'title' => 'The Post Title', 'status' => 'Published' ]); /** * Update an Item * @param string $collection * @param integer $id * @param array $params */ $directus->item($collection, $id)->update([ 'title' => 'The New Post Title' ]); /** * Delete an Item * @param string $collection * @param integer $id */ $directus->item($collection, $id)->delete(); /** * List Item Revisions * @param string $collection * @param integer $id */ $revisions = $directus->itemRevisions($collection, $id)->get(); /** * Revert to a Given Revision * @param string $collection * @param integer $id * @param integer $revision */ $directus->itemRevert($collection, $id, $revision)->update();
文件
文件可以保存到任何给定位置。Directus有一个强大的资产端点,可以用来动态生成图像的缩略图。
/** * List the Files */ $files = $directus->files()->get(); /** * Retrieve a File * @param integer $id */ $file = $directus->file($id)->get(); /** * Create a File * @param array $data */ $directus->files()->create([ 'data' => base64_encode(file_get_contents('./file.pdf')) ]); /** * Update a File * @param array $data */ $directus->file(1)->update([ 'data' => base64_encode(file_get_contents('./file.pdf')) ]); /** * Delete a File * @param integer $id */ $directus->file(1)->delete();
资产(缩略图)
图像类型的文件可以动态调整大小和转换,以满足任何需求。
/** * Get an asset * @param string $private_hash */ $asset = $directus->asset($private_hash)->get(); /** * Get an asset * @param string $private_hash * @param string $key - The key of the asset size configured in settings. * * @param integer $w * Width of the file in pixels. * * @param integer $h * Height of the file in pixels. * * @param string $f * Fit. One of crop, contain. * * @param integer $q * Quality of compression. Number between 1 and 100. */ $asset = $directus->asset($private_hash)->queries([ 'key' => $key, 'w' => 100, 'h' => 100, 'f' => 'crop', 'q' => 80 ])->get();
文件夹
文件夹目前还没有做什么,但将在(不久的将来)用来分组文件。
/** * List the Folders */ $folders = $directus->folders()->get(); /** * Retrieve a Folder * @param integer $id */ $folder = $directus->folder($id)->get(); /** * Create a Folder * @param array $data */ $directus->folders()->create([ 'name' => 'Amsterdam' ]); /** * Update a Folder * @param integer $id * @param array $data */ $directus->folder($id)->update([ 'parent_folder' => 3 ]); /** * Delete a Folder * @param integer $id */ $directus->folder($id)->delete();
活动
Directus内部发生的所有事件都会被跟踪并存储在活动集合中。这使您能够对发生的一切都有完整的责任。
/** * List Activity Actions */ $activities = $directus->activities()->get(); /** * Retrieve an Activity Action * @param integer $id */ $activity = $directus->activity($id)->get(); /** * Create a Comment * @param array $data */ $directus->comments()->create([ 'collection' => $collection, 'id' => $id, 'comment' => 'Example of comment' ]); /** * Update a Comment * @param array $data */ $directus->comment($id)->update([ 'comment' => 'Updated example of comment' ]); /** * Delete a Comment * @param integer $id */ $directus->comment($id)->delete();
权限
权限控制谁何时可以访问什么。
/** * List the Permissions */ $permissions = $directus->permissions()->get(); /** * Retrieve a Permission * @param integer $id */ $permission = $directus->permission($id)->get(); /** * List the Current User's Permissions */ $permissions = $directus->myPermissions()->get(); /** * List the Current User's Permissions for Given Collection * @param string @collection */ $permission = $directus->myPermission($collection)->get(); /** * Create a Permission * @param array @data */ $directus->permissions()->create([ 'collection' => 'customers', 'role' => 3, 'read' => 'mine', 'read_field_blacklist' => ['featured_image'] ]); /** * Update a Permission * @param integer @id * @param array @data */ $directus->permission($id)->update([ 'read' => 'full' ]); /** * Delete a Permission * @param integer @id */ $directus->permission($id)->delete();
项目
项目是平台上的独立租户。每个项目都有自己的数据库和数据。
/** * List Available Projects */ $projects = $directus->projects()->get(); /** * Retrieve Project Info * @param string $project */ $project = $directus->project($project)->get(); /** * Create a Project * @param array $data */ $directus->projects()->create([ 'project' => 'thumper', 'super_admin_token' => 'very_secret_token', 'db_name' => 'db', 'db_user' => 'root', 'db_password' => 'root', 'user_email' => 'admin@example.com', 'user_password' => 'password' ]); /** * Delete a Project * @param array $project */ $directus->projects($project)->delete();
关系
哪些数据与哪些其他数据相关联。允许您将作者分配给文章,产品分配给销售,以及您能想到的任何其他结构。
/** * List the Relations */ $relations = $directus->relations()->get(); /** * Retrieve a Relation * @param integer $id */ $relation = $directus->relation($id)->get(); /** * Create a Relation * @param array $data */ $directus->relations()->create([ 'collection_many' => 'articles', 'field_many' => 'author', 'collection_one' => 'authors', 'field_one' => 'books' ]); /** * Update a Relation * @param integer $id * @param array $data */ $directus->relation($id)->update([ 'field_one' => 'books' ]); /** * Delete a Relation * @param integer $id */ $directus->relation($id)->delete();
修订
修订是对项所做的单个更改。Directus跟踪更改,因此您可以随时回滚到以前的状态。
/** * List the Revisions */ $revisions = $directus->revisions()->get(); /** * Retrieve a Revision * @param integer $id */ $revision = $directus->revision($id)->get();
角色
角色是共享权限的用户组。
/** * List the Roles */ $roles = $directus->roles()->get(); /** * Retrieve a Role * @param integer $id */ $role = $directus->role($id)->get(); /** * Create a Role * @param array $data */ $directus->roles()->create([ 'name' => 'Interns' ]); /** * Update a Role * @param integer $id * @param array $data */ $directus->role($id)->update([ 'description' => 'Limited access only.' ]); /** * Delete a Role * @param integer $id */ $directus->role($id)->delete();
服务器
访问Directus运行的位置。允许您确保服务器拥有运行平台所需的一切,并检查我们正在处理的延迟类型。
/** * Retrieve Server Info * Perform a system status check and return the options. * @param string $token */ $info = $directus->info($token)->get(); /** * Ping the server * Ping, pong. Ping.. pong. 🏓 */ $pong = $directus->ping()->get();
设置
设置控制平台的工作方式和行为。
/** * List the Settings * The Setting Object */ $settings = $directus->settings()->get(); /** * Retrieve a Setting * @param integer $id */ $setting = $directus->setting($id)->get(); /** * Create a Setting * @param array $data */ $directus->settings()->create([ 'key' => 'my_custom_setting', 'value' => 12 ]); /** * Update a Setting * @param integer $id */ $directus->setting($id)->update([ 'value' => 15 ]); /** * Delete a Setting * @param integer $id */ $directus->setting($id)->delete();
用户
用户是您访问数据的方式。
/** * List the users */ $users = $directus->users()->get(); /** * Retrieve a User * @param integer $id */ $user = $directus->user($id)->get(); /** * Retrieve the Current User */ $me = $directus->me()->get(); /** * Create a User * Create a new user. * @param array $data */ $directus->users()->create([ 'first_name' => 'John', 'last_name' => 'Smith', 'email' => 'user@nikba.com', 'password' => 'VeryStrongPassword', 'role' => 1, 'status' => 'active' ]); /** * Update a User * Update an existing user * @param integer $id * @param array $data */ $directus->user($id)->update([ 'status' => 'suspended' ]); /** * Delete a User * Delete an existing user * @param integer $id */ $directus->user($id)->delete(); /** * Invite a New User * Invites one or more users to this project. It creates a user with an invited status, and then sends an email to the user with instructions on how to activate their account. * @param integer $email */ $directus->invite('user@nikba.com')->create(); /** * Accept User Invite * Accepts and enables an invited user using a JWT invitation token. * @param string $token */ $directus->acceptUser($token)->post(); /** * Track the Last Used Page * Updates the last used page field of the user. This is used internally to be able to open the Directus admin app from the last page you used. * @param integer $id * @param string $url */ $directus->trackingPage($id, '/thumper/settings/')->update(); /** * List User Revisions * List the revisions made to the given user. * @param integer $id */ $revisions = $directus->userRevisions($id)->get(); /** * Retrieve a User Revision * Retrieve a single revision of the user by offset. * @param integer $id * @param integer $offset */ $revision = $directus->userRevision($id, $offset)->get();
邮件
通过电子邮件发送电子邮件。
/** * Send an Email * @param array $to * @param string $subject * @param string $body * @param string $type * HTML or plain text * @param array $data */ $directus->mail()->create([ 'to' => [ 'client@example.com', 'admin@example.com' ], 'subject' => 'Welcome message', 'body' => 'Hello <b>{{name}}</b>, welcome to our website: {{website}}.', 'type' => 'html', 'data' => [ 'name' => 'John Smith', 'website' => 'www.nikba.com' ] ]);
实用工具
/** * Create a Hash * Create a hash for a given string. * @param string $StringToHash */ $hash = $directus->hash('StringToHash')->create(); /** * Verify a Hashed String * Check if a hash is valid for a given string. * @param string $StringToHash * @param string $hash */ $valid = $directus->hashMatch('StringToHash', $hash)->create(); /** * Generate a Random String * Returns a random string of given length. * @param integer $length */ $string = $directus->randomString($length)->create(); /** * Generate a 2FA Secret * Returns a random string that can be used as a 2FA secret */ $secret = $directus->secret()->get();
文档
有关可用方法和参数的更多信息,请参阅API文档
支持
对于支持,请发送电子邮件至office@nikba.com。
贡献
贡献始终受欢迎!
如果您发现了一个错误或希望为此项目做出贡献,请打开GitHub上的问题或提交拉取请求。