jswh / rpc
一个简单的类似RPC的API服务包
0.2
2017-06-30 05:53 UTC
This package is not auto-updated.
Last update: 2024-09-18 19:39:01 UTC
README
安装
composer require jswh/rpc
使用默认应用程序快速入门
index.php
<?php require __DIR__ . '/vendor/autoload.php'; $app = new \RPC\Application('Api'); echo $app->run();
您的API文件
<?php namesapce Api; class Hello { /** * @httpMethod GET * @param string $name * @return void */ public function hello($name) { return 'Hello ' . $name . ' !' } }
启动应用程序
php -S localhost:8000 index.php
调用API
https://:8000/Hello.hello?name=world
编写您自己的
过程解析器
<?php class MyParser implements RPC\interfaces\ProcedureParser { public function parse($path) { preg_match("/(\w+)\.(\w+)$/", $_SERVER['REQUEST_URI'], $matches); if (count($matches) !== 3) { return null; } $p = new Procedure('MyApi', $matches[1], $matches[2]); return $p; } }
逻辑
<?php Annotation::registerMeta('method', 'GET|PUT|POST'); $parser = new MyParser $procedure = $parser->parse(null); $annotation = new Annotation($procedure->getClass(), $procedure->method); $method = $annotation->meta('method'); if ($method && $method !== $_SERVER['HTTP_METHOD']) { header('', true, 404); } else { if ($method === "GET") { $params = $_GET; } else { $params = array_merge($_POST, $_GET); } header('Content-Type: application/json'); return json_encode($procedure->call($params)); }