arafatkn/wrest

WREST - WordPress REST API的简单易用的封装器

0.0.1 2023-03-26 11:47 UTC

This package is auto-updated.

Last update: 2024-08-31 00:38:46 UTC


README

WREST

WREST (WordPress REST)

WREST - WordPress REST API的简单易用的流畅封装器。

Latest Stable Version PHP Version Require License Total Downloads

安装

要求

  • PHP >= 5.6
  • WordPress >= 4.4

您可以通过两种方式安装wRest,通过composer和手动安装。

1. Composer安装

在您的项目(主题/插件)中添加依赖项

composer require arafatkn/wrest

现在如果您还没有这样做,请将autoload.php添加到您的文件中。

require __DIR__ . '/vendor/autoload.php';

2. 手动安装

尚未提供

使用方法

WordPress API需要一个命名空间,因此您必须首先设置一个命名空间。

一种方法是在创建路由之前设置一个默认命名空间。

wrest()->setNamespace('my-plugin/v1');

wrest()->get('hello', function() {
    return 'Hello world';
});

或者您可以为一系列路由设置命名空间。

wrest()->usingNamespace('my-plugin/v1', function($wrest) {
    // You can use both $wrest or wrest() here
    $wrest->get('greeting', function(WP_REST_Request $req) {
        return 'Hello world';
    });
});

传递的回调将获得一个WP_REST_Request对象作为参数。

wrest()->get('greeting', function(WP_REST_Request $req) {
    return 'Hello world';
});

更多示例

wrest()->get('posts', $callback);
wrest()->post('posts', [$postController, 'store']);
wrest()->put($uri, $callback);
wrest()->patch($uri, $callback);
wrest()->delete($uri, $callback);
wrest()->any($uri, $callback); // All Routes GET, POST, PUT, PATCH, DELETE
wrest()->match(['GET', 'POST'], $uri, $callback);

权限管理

传递能力

wrest()->get('greeting', function() {
    return 'Hello world';
})->permission('manage_options');

传递回调

wrest()->get('greeting', function() {
    return 'Hello world';
})->permission(function(WP_REST_Request $req) {
    return is_user_logged_in();
});

参数传递

wrest()->get('/posts/{slug}', function(WP_REST_Request $request, $slug) {
    //
})->param('slug', '[A-Za-z]+');

wrest()->get('/user/{id}/{name}', function ($request, $id, $name) {
    //
})->param('id', '[0-9]+')->param('name', '[a-z]+');

wrest()->get('/user/{id}/{name}', function ($request, $id, $name) {
    //
})->param(['id' => '[0-9]+', 'name' => '[a-z]+']);

如果您没有传递参数的正则表达式,则默认使用[^/]+

wrest()->get('/posts/{slug}', function(WP_REST_Request $request, $slug) {
    // Also Works. slug will contain all the characters between posts/ and next /.
});

路由操作

操作可以是回调、类方法、静态类方法或非静态类方法,并且可以按以下方式传递。

wrest()->get('posts', function() => {});
wrest()->get('posts', 'getAllPosts'); // getAllPosts is a function.
wrest()->get('posts', 'PostController@getAll'); // getAll is static function.
wrest()->get('pages', [$pageController, 'getAll']); // getAll is non-static function.
wrest()->get('authors', [CommentController::class, 'getAll']); // getAll is static function.

所有函数都将获得一个WP_REST_Request对象作为参数。

支持的功能

  • 所有路由的命名空间。
  • 普通路由。
  • 带有参数的路由。
  • 路由操作。
  • 权限管理。

即将推出的功能

  • 添加对路由组的支持。
  • 添加对动态命名空间的支持。
  • 添加对命名空间组的支持。
  • 添加对资源路由的支持。
  • 添加对模式的支持。
  • 添加对路由重定向的支持。
  • 添加对将匹配的参数直接传递给操作的支持。

致谢

特别感谢Tareq Hasan提供了这个极好的想法。

贡献指南

这仍然是测试版,尽管我对它按预期工作有信心。您可以通过报告错误、修复错误、审查拉取请求等方式进行贡献。前往问题部分,您可以立即开始处理一个问题。如果您想添加或修复某些内容,请创建一个拉取请求。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件