Esta série do SitePoint explorou os princípios de repouso. Este artigo demonstra a construção de um serviço Web RESTful usando Slim, um micro-quadro PHP inspirado em Sinatra (Ruby). A natureza leve de Slim, com componentes principais como roteamento, manuseio de solicitação/resposta e suporte mínimo de visualização, o torna ideal para APIs de descanso simples.
conceitos -chave:
post ()
, put ()
e delete ()
métodos para criar, atualizar e excluir registros do livro, respectivamente. Apresentando Slim:
Comece baixando Slim. Este exemplo usa o estilo 5.3. Create index.php
:
get("/", function () {
echo "Hello Slim World
";
});
$app->run();
?>
Accessando index.php
No seu navegador exibe "Hello Slim World". Automolos de automóveis esbeltos são os arquivos necessários. O construtor Slim aceita a configuração (por exemplo, mode
, modans.path
, View
). mode
define o ambiente (desenvolvimento/produção) e modans.path
especifica o diretório de modelos. Os manipuladores de exibição personalizados podem substituir o padrão slim_view
. Exemplo:
"development",
"TEMPLATES.PATH" => "./templates"
));
?>
A criação de rota é crucial. As rotas mapeiam os URIs para as funções de retorno de chamada com base nos métodos HTTP. Slim prioriza a primeira rota correspondente; As solicitações incomparáveis resultam em um erro 404. Após definir rotas, ligue para run ()
para iniciar o aplicativo.
Construindo um serviço de biblioteca:
Vamos criar um serviço de gerenciamento de bibliotecas. Notorm simplifica a interação do banco de dados (requer uma instância de PDO).
listando livros:
Este endpoint lista todos os livros no formato 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 ()
lida com solicitações. use
permite acessar variáveis externas na função anônima. O cabeçalho da resposta está definido como Application/json
, e os dados do livro são codificados como JSON.
Obtendo detalhes do livro:
Recupere um livro por 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) ...
O parâmetro da rota : id
é passado para a função de retorno de chamada. Parâmetros opcionais usam /book (/: id)
. Para parâmetros opcionais sem argumentos explícitos, use func_get_args ()
.
Adicionando e editando livros:
post ()
adiciona, e put ()
atualiza livros:
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 ()
e $ app-> request ()-> put ()
recuperar e colocar dados respectivamente. Para solicitações de put baseadas no navegador, use um campo oculto _ Método
com valor "put" no seu formulário.
Excluindo livros:
exclua um livro por 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) ...
o delete ()
Método remove o banco de dados registrado. O método map ()
lida com vários métodos http em uma única rota (não mostrada aqui).
Conclusão:
Este artigo demonstra a construção de um serviço Web Basic RESTful com Slim. Desenvolvimento adicional deve incluir manuseio de erro robusto e validação de entrada. O código -fonte (não incluído aqui) pode ser encontrado no GitHub (link não fornecido no texto original). A seção Perguntas frequentes do texto original é omitida, pois fornece informações básicas prontamente disponíveis através da documentação de Slim.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3