nikba/directus-api

Directus v8.8.1 API的PHP包装器

v1.2 2023-03-30 20:20 UTC

This package is auto-updated.

Last update: 2024-09-30 01:49:05 UTC


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上的问题或提交拉取请求。

许可

MIT