1. Go to this page and download the library: Download tochka-developers/jsonrpc library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tochka-developers / jsonrpc example snippets
\Route::post('/api/v1/public/jsonrpc', function (\Illuminate\Http\Request $request) {
return \Tochka\JsonRpc\Facades\JsonRpcServer::handle($request->getContent());
});
return [
// можно настроить несколько разных конфигурация для разных точек входа
// чтобы указать в роуте, какая именно конфигурация должна быть использована - передавайте ключ конфига вторым
// параметром в \Tochka\JsonRpc\Facades\JsonRpcServer::handle
'default' => [
// корневой путь к точке входа (т.е. без указания group и action, если они используются)
// необходим для корректного формирования и кеширования списка роутов
'endpoint' => '/api/v1/public/jsonrpc',
// Тип формирования точки входа (получать или нет из конечного URI группу методов и метод
'dynamicEndpoint' => ServerConfig::DYNAMIC_ENDPOINT_NONE,
// Краткое описание сервера
'summary' => 'Основная точка входа',
// Полное описание сервера
'description' => 'Основная точка входа',
// Namespace, в котором находятся контроллеры
'namespace' => 'App\\Http\\Controllers\\Api\\',
// Suffix для контроллеров
'controllerSuffix' => 'Controller',
// Разделитель для имен методов
'methodDelimiter' => '_',
// список Middleware, обрабатывающих запросы
// описание middleware ниже
'middleware' => [ //
Tochka\JsonRpc\Middleware\LogMiddleware::class => [
// Канал лога, в который будут записываться все логи
'channel' => 'default',
],
Tochka\JsonRpc\Middleware\TokenAuthMiddleware::class => [
'headerName' => 'X-Tochka-Access-Key',
// Ключи доступа к API
'tokens' => [
'troll' => env('JSONRPC_KEY_TROLL', ''),
],
],
Tochka\JsonRpc\Middleware\AccessControlListMiddleware::class => [
'acl' => [
'*' => '*',
FooController::class => ['service'],
FooController::class . '@method' => ['service2'],
],
],
],
],
];
use Tochka\JsonRpc\Annotations\ApiMapRequestToObject;
class ApiController extends BaseController
{
/**
* @ApiMapRequestToObject(parameterName="request")
*/
#[ApiMapRequestToObject('request')]
public function testMethod(MyDTOForRequest $request): bool
{
// ...
}
}
use Tochka\JsonRpc\Annotations\ApiIgnore;
use Tochka\JsonRpc\Annotations\ApiIgnoreMethod;
/**
* Использование аннотации/атрибута @ApiIgnore для класса исключает все методы класса из маршрутизации
* @ApiIgnore()
*/
#[ApiIgnore]
class ApiController extends BaseController
{
// ...
}
/**
* Использование аннотации/атрибута @ApiIgnoreMethod для класса исключает указанные методы из маршрутизации
* @ApiIgnoreMethod(name="methodNameFoo")
* @ApiIgnoreMethod(name="methodNameBar")
*/
#[ApiIgnoreMethod('methodNameFoo')]
#[ApiIgnoreMethod('methodNameBar')]
class ApiController extends BaseController
{
/**
* Использование аннотации/атрибута @ApiIgnore для метода исключает указанный метод из маршрутизации
* @ApiIgnore()
*/
#[ApiIgnore]
public function fooMethod()
{
// ...
}
public function barMethod()
{
// ...
}
}