Skip to content

le-vlad/sapi-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sapi-server

Simple API server

Простой PHP API сервер.

Базовая настройка

Инициализация приложения происходит в app.php

Для начала работы с приложением необходимо настроить подключение к базе данных в файле /app/config.php

private $params = [
        'hashSalt' => 'vkwejroiewurn8o2y34obi23n4ybiyu23r427834tyo2j8hrtb2o3784ho2873p4234',
        'mysql' => [
            'host' => 'localhost',
            'user' => 'root',
            'password' => 'vfhbyjxrf123',
            'dbname' => 'sapi',
        ],
     ];

Для работы сервера необходимо настроить NGINX сервер. Пример конфигурационного файла

server {
    listen 80;

    root /var/www/sapi;

    index app.php;

    server_name sapi.app www.sapi.app;
    
    rewrite ^/([^/]*)/([^/]*)$ /app.php?controller=$1&action=$2 break;    

    location / {
        try_files $uri $uri/ /app.php?$args;
    }


    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    }
}

Все запросы приложения должны быть направлены на app.php

Написание контроллеров

Все контроллеры приложения находятся в папке /app/Controllers Спиль написания контроллеров должен соответствовать indexController.php

Каждый экземпляр контроллера должен быть наследован от родительского класса BaseGuestController

Работа с базой данных

После настройки приложения в config.php

В каждом контроллере будет доступен обьект класса DB который позволит более простым способом генерировать простые запросы в mysql. Вызов db обьект в контроллере проиодит следующим образом.

   $this->app->store
      ->select(['login', 'password'])
      ->from('users')
      ->where('id', '=', '1')
      ->where('login', '=', 'lorem')
      ->getQuery();

Метод getQuery() возвращает Mysql запрос в чистом виде как строку. Для выполенения запроса вместо метода getQuery() выполнить ->exec()->all() чтобы получить все поля которые соответствуют запросу. или ->exec()->one() чтобы получить только первое совпадение.

Модели

Для работы с сущностями баз данных можно использовать модели.

Пример модели находится в файле app/Base/models/User.php Все модели должны быть наследованы от BaseModel класса.

Пример использования модели

$this->user = (new Token($this->app))->getUser($this->request->post('token'));
$userModel = new User($this->app)->find(['id', '=', 17]);
$userModel->name // Вернет имя пользователя из БД или null 

В первом примере мы использовали модель Token для того, чтобы найти необходимого пользователя результатом выполенения операции будет обьект модели User

Во втором примере мы использовали модель User для того, чтобы найти пользователя с идентификатором 17

По мимо метода find() у моделей есть также метот remove() Который удаляет модель из БД.

$user = new User($this->app)->find(['id', '=', 17]);
$user->remove(); //Удаляет пользователя с ИД 17 из базы данных

About

Simple API server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages