dking3876/simple-rest-api

1.1.0 2017-11-28 17:07 UTC

README

composer require dking3876/simple-rest-api

设置

应设置一个 .htaccess 文件以确保启用 CORS。以下是一个可用的配置示例

<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "Origin, Content-Type, X-Auth-Token , Authorization, x-requested-with"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

配置

在您的主文件中,您可以设置配置数组并将其传递给 API 构造函数。

$api = new SimpleRESTAPI\API($config);

配置数组具有以下索引

  • connection: 用于存储数据库凭据
  • base: 用于设置 API 的基本路径,允许对不同的端点使用版本控制
  • response: 默认响应头的类型
  • socket: 用于与 WebSocket 一起使用
  • paths: URL 路径、请求方法和响应的数组

连接

Simple REst api 可帮助存储数据库连接凭据。然后可以访问这些凭据作为静态属性 \SimpleRESTAPI\API::$DBCreds->{host|port|database|username|password}

$config = array(
    "connection" => array(
        "host"  => "localhost",
        "port"  => "",
        "database"  => "",
        "username"  => "",
        "password"  => ""
    )
);

基本路径

这是 API 的起始基本路径。此路径用于帮助对 API 进行版本控制。

$config = array(
    "base"  => "/api/v2/"
);

响应

所有请求的默认响应头。您可以通过 ... 来覆盖此设置

$config = array(
    "response"  => 'Content-Type: application/json'
);

套接字

SimpleRESTAPI 内置了 WebSocket。您可以设置以下事件的调用方法

  • onOpen: 当客户端建立连接时触发。传递 socketClass 和用于客户端会话持续时间的 clientID 作为参数。 (\SimpleRESTAPI\WebSocket $socket, $clientId)
  • onMessage: 当客户端发送新消息时触发。传递 socketClass、发送消息的 clientId、消息数据和消息长度作为参数。 (\SimpleRESTAPI\WebSocket $socket, $clientId, $data, $dataLength)
  • onTick: 对于每个连接的客户端,对于每个循环/滴答(一个滴答大约是 8-12 秒)。传递 socketClass 和当前 '滴答' 的 clientID 作为参数。 (\SimpleRESTAPI\WebSocket $socket, $clientId)
  • onClose: 当客户端从服务断开连接时触发。传递 socketClass、断开连接的 clientId 和断开状态作为参数。 (\SimpleRESTAPI\WebSocket $socket, $clientId, $status)
$sample = function(\SimpleRESTAPI\WebSocket $socket, $clientId, $status){

}
$config = array(
    "socket"    => [
        "host"  => "127.0.0.1",
        "port"  => "9002",
        "events"    => [
            "onOpen"  =>array('Test\\testing\\test_socket_controller', 'testOpen'), 
            "onMessage"   => 'Test\\testing\\test_socket_controller::testMessage',
            "onTick"    => function(\SimpleRESTAPI\WebSocket $socket, $clientId){

            },
            "onClose"     => $sample
        ]
    ]
);

路径

路径是一个定义了如何路由请求的路径数组。路径定义由以下组成

  • path: 使用正则表达式定义的路径。以下提供了一些示例

          'path'  => '^projects/?$`
          'path' => '^projects/(?P<project_id>[^/]*)/?$`
    

    您可以使用 路径正则表达式定义的命名子模式 定义路径

  • 请求方法及可调用函数:此定义提供了匹配请求方法的函数。可调用可以是以下示例中的任何一种。

          'GET'       => function($params, $tokens){}
          'HEAD'      => $myNamedFunction
          'POST'      => 'MyNameSpace\\MyClass::$myStaticMethod'
          'PATCH'     => array('MyNameSpace\MyClass', 'myMethod')
          'PUT'       => array($myInstantiatedObject, 'myMethod')
          'DELETE'    => ($params, $tokens)=>{}
    

作为第一个参数传递给您的函数的是 GET、POST 参数的数组。传递给函数的是 URL 令牌的数组((?P[^/]*) 等同于 $tokens['project_id'])

主脚本

设置好配置数组后,只需将配置作为参数传递给 API 构造函数即可。

$config = [
    'connection'    => ...
    ...
    'paths' => array(...)
]
$loader = require __DIR__.'/../vendor/autoload.php';
$api = new SimpleRESTAPI\API($config);

$api->router();
echo json_encode($api->response()); //used to encode the response to json.