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