«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > PHP Expert | Напишите Restful Web Services, используя Slim Framework

PHP Expert | Напишите Restful Web Services, используя Slim Framework

Опубликовано в 2025-04-14
Просматривать:658

PHP Master | Writing a RESTful Web Service with Slim

Эта серия SitePoint изучила принципы отдыха. В этой статье демонстрируется создание спокойного веб-сервиса с использованием Slim, PHP, микрофромная работа, вдохновленная Sinatra (Ruby). Легкая природа Слима, с такими основными компонентами, такими как маршрутизация, обработка запроса/ответа и минимальная поддержка представления, делает его идеальным для простых API REST.

]

Key Concepts:

    ]
  • SLIM-это PHP Micro-Framework, идеально подходящая для простых услуг RESTFUL, поддерживающего PHP 5.2 и как процедурные, так и (5.3) стили функционального программирования.
  • ]
  • маршруты карты URI для функций обратного вызова для конкретных методов HTTP. Slim эффективно обрабатывает несколько методов для одного и того же URI.
  • ]
  • Пример приложения для управления библиотекой демонстрирует листинг, добавление, удаление, удаление и обновление данных с помощью вызовов веб -сервисов. ЗАМЕРЕНИ, легкая библиотека баз данных PHP, обрабатывает взаимодействие базы данных.
  • ]
  • endpoints используйте post () , put () , и delete () методы для создания, обновления и удаления записей книги соответственно.
  • ]
]

введение Slim:

]

начать с загрузки Slim. В этом примере используется стиль 5.3. Create index.php :

]
get("/", function () {
    echo "

Hello Slim World

"; }); $app->run(); ?>

доступ к index.php в вашем браузере отображает "Hello Slim World". Тонкие автозагрузки необходимых файлов. Slim Constructor принимает конфигурацию (например, mode , templates.path , view ). mode устанавливает среду (разработка/производство) и templates.path определяет каталог шаблонов. Пользовательские обработчики представления могут заменить по умолчанию slim_view . Пример:

 "development",
    "TEMPLATES.PATH" => "./templates"
));
?>

создание маршрута имеет решающее значение. Маршруты отображают URI для функций обратного вызова на основе методов HTTP. Slim приоритет первым соответствующим маршрутом; Непревзойденные запросы приводят к ошибке 404. После определения маршрутов, вызовите run () , чтобы запустить приложение.

создание библиотечной службы:

]

давайте создадим службу управления библиотеками. Novorm упрощает взаимодействие с базой данных (требует экземпляра PDO).

]

listing books:

] эта конечная точка перечисляет все книги в формате json:

]
get("/books", function () use ($app, $db) {
    $books = array();
    foreach ($db->books() as $book) {
        $books[] = array(
            "id" => $book["id"],
            "title" => $book["title"],
            "author" => $book["author"],
            "summary" => $book["summary"]
        );
    }
    $app->response()->header("Content-Type", "application/json");
    echo json_encode($books);
});
// ... (rest of the code) ...
]

get () обрабатывает запросы. использовать доступа к внешним переменным в анонимной функции. Заголовок ответа установлен в Application/json , и данные книги кодируются как json.

]

Получение сведений о книге:

извлечь книгу от id:

]
get("/book/:id", function ($id) use ($app, $db) {
    $app->response()->header("Content-Type", "application/json");
    $book = $db->books()->where("id", $id);
    if ($data = $book->fetch()) {
        echo json_encode(array(
            "id" => $data["id"],
            "title" => $data["title"],
            "author" => $data["author"],
            "summary" => $data["summary"]
        ));
    } else {
        echo json_encode(array(
            "status" => false,
            "message" => "Book ID $id does not exist"
        ));
    }
});
// ... (rest of the code) ...
]

Параметр маршрута : id передается в функцию обратного вызова. Необязательные параметры используйте /book (/: id) . Для необязательных параметров без явных аргументов обратного вызова, используйте func_get_args () .

добавление и редактирование книг:

]

post () добавляет, и put () обновления книг:

]
post("/book", function () use ($app, $db) {
    $app->response()->header("Content-Type", "application/json");
    $book = $app->request()->post();
    $result = $db->books->insert($book);
    echo json_encode(array("id" => $result["id"]));
});

$app->put("/book/:id", function ($id) use ($app, $db) {
    $app->response()->header("Content-Type", "application/json");
    $book = $db->books()->where("id", $id);
    if ($book->fetch()) {
        $post = $app->request()->put();
        $result = $book->update($post);
        echo json_encode(array(
            "status" => (bool)$result,
            "message" => "Book updated successfully"
        ));
    } else {
        echo json_encode(array(
            "status" => false,
            "message" => "Book id $id does not exist"
        ));
    }
});
// ... (rest of the code) ...
]

$ app-> request ()-> post () и $ app-> request ()-> put () получить публикацию и положить данные соответственно. Для запросов на основе браузера используйте скрытое поле _ Method со значением «Поместить» в вашей форме.

]

удаление книг:

удалить книгу от id:

]

delete("/book/:id", function ($id) use ($app, $db) {
    $app->response()->header("Content-Type", "application/json");
    $book = $db->books()->where("id", $id);
    if ($book->fetch()) {
        $result = $book->delete();
        echo json_encode(array(
            "status" => true,
            "message" => "Book deleted successfully"
        ));
    } else {
        echo json_encode(array(
            "status" => false,
            "message" => "Book id $id does not exist"
        ));
    }
});
// ... (rest of the code) ...
Метод

delete () удаляет запись базы данных. Метод map () обрабатывает несколько методов HTTP по одному маршруту (не показано здесь). ]

Заключение:

Эта статья демонстрирует создание основной веб -сервис Restful с Slim. Дальнейшая разработка должна включать надежную обработку ошибок и проверку ввода. Исходный код (не включенный здесь) можно найти на GitHub (ссылка не предоставлена ​​в исходном тексте). Раздел часто задаваемых вопросов исходного текста опущен, поскольку он предоставляет базовую информацию, легко доступную через документацию Слима.

]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3