@Chesterfield25

Правильно ли создаю REST API?

Хочу создать REST API правильно ли я это делаю для регистрации и авторизации пользователя?
63da7e27ee026396495174.png
Иерархия очень проста есть конфиг подключения к бд, модель класса пользователя и регистрация.

Модель класса
<?php
class User {

    // подключение к базе данных и таблице "products"
    private $conn;
    private $table_name = "users";

    // свойства объекта
    public $id;
    public $login;
    public $email;
    public $password;
    public $status;
    public $balance;
    public $created;

    // конструктор для соединения с базой данных
    public function __construct($db){
        $this->conn = $db;
    }

   // метод readAll() - получение абсолютно всех пользователей
function read() {

    // выбираем все записи
    $query = "SELECT * FROM " . $this->table_name . " ";

    // подготовка запроса
    $stmt = $this->conn->prepare($query);

    // выполняем запрос
    $stmt->execute();

    return $stmt;
}

function readOne() {

    // запрос для чтения одной записи (товара)
    $query = "SELECT * FROM " . $this->table_name . " WHERE f.id = ? LIMIT 0,1";

    // подготовка запроса
    $stmt = $this->conn->prepare( $query );

    // привязываем id товара, который будет обновлен
    $stmt->bindParam(1, $this->id);

    // выполняем запрос
    $stmt->execute();

    // получаем извлеченную строку
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    // установим значения свойств объекта
    $this->id = $row["id"];
    $this->login = $row["login"];
    $this->email = $row["email"];
    $this->password = $row["password"];
    $this->status = $row["status"];
    $this->balance = $row["balance"];
    $this->created = $row["created"];
}

// метод create - создание товаров
function create(){

    // запрос для вставки (создания) записей
    $query = "INSERT INTO
                " . $this->table_name . "
            SET login=:login, email=:email, password=:password, status=:status, balance=:balance, created=:created";

    // подготовка запроса
    $stmt = $this->conn->prepare($query);

    // очистка
    $this->login=htmlspecialchars(strip_tags($this->login));
    $this->email=htmlspecialchars(strip_tags($this->email));
    $this->password=htmlspecialchars(strip_tags($this->password));
    $this->status=htmlspecialchars(strip_tags($this->status));
    $this->balance=htmlspecialchars(strip_tags($this->balance));
    $this->created=htmlspecialchars(strip_tags($this->created));

    // привязка значений
    $stmt->bindParam(":login", $this->login);
    $stmt->bindParam(":email", $this->email);
    $stmt->bindParam(":password", $this->password);
    $stmt->bindParam(":status", $this->status);
    $stmt->bindParam(":balance", $this->balance);
    $stmt->bindParam(":created", $this->created);

    // выполняем запрос
    if ($stmt->execute()) {
        return true;
    }

    return false;
}
}
?>


Регистрация
<?php
// необходимые HTTP-заголовки
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

// получаем соединение с базой данных
include_once "../config/database.php";

// создание объекта товара
include_once "../models/user.php";

$database = new Database();
$db = $database->getConnection();

$user = new User($db);
 
// получаем отправленные данные
$data = json_decode(file_get_contents("php://input"));

// убеждаемся, что данные не пусты
if (
    !empty($data->login) &&
    !empty($data->email) &&
    !empty($data->password) &&
    !empty($status->status) &&
    !empty($balance->balance) &&
    !empty($created->created)
) {

    // устанавливаем значения свойств товара
    $user->login = $data->login;
    $user->email = $data->email;
    $user->password = $data->password;
    $user->status = $data->status;
    $user->balance = $data->balance;
    $user->created = date("d-m-Y H:i:s");

    // создание товара
    if($user->create()){

        // установим код ответа - 201 создано
        http_response_code(201);

        // сообщим пользователю
        echo json_encode(array("message" => "Faucet was created."), JSON_UNESCAPED_UNICODE);
    }

    // если не удается создать товар, сообщим пользователю
    else {

        // установим код ответа - 503 сервис недоступен
        http_response_code(503);

        // сообщим пользователю
        echo json_encode(array("message" => "Faucet cannot be created."), JSON_UNESCAPED_UNICODE);
    }
}

// сообщим пользователю что данные неполные
else {

    // установим код ответа - 400 неверный запрос
    http_response_code(400);

    // сообщим пользователю
    echo json_encode(array("message" => "Unable to create faucet. The data is incomplete."), JSON_UNESCAPED_UNICODE);
}
?>
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 1
HardBot
@HardBot
back-end, front-end developer
Нет, не правильно!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽
20 апр. 2024, в 18:09
70000 руб./за проект
20 апр. 2024, в 18:04
3000 руб./за проект
20 апр. 2024, в 17:55
3000 руб./за проект