"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Especialista PHP | Escreva Serviços da Web Restful usando estrutura Slim

Especialista PHP | Escreva Serviços da Web Restful usando estrutura Slim

Postado em 2025-04-14
Navegar:267

PHP Master | Writing a RESTful Web Service with Slim

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:

  • slim é um micro-quadro PHP perfeito para serviços de repouso direto, suportando php 5.2 e estilos de programação funcionais e (5.3) funcionais.
  • Mapeie os URIs para funções de retorno de chamada para métodos HTTP específicos. Slim lida com eficiência vários métodos para o mesmo URI.
  • Um exemplo de aplicativo de gerenciamento da biblioteca mostra listagem, adicionando, excluindo e atualizando detalhes do livro através de chamadas de serviço da web. Notorm, uma biblioteca de banco de dados PHP leve, lida com a interação do banco de dados.
  • endpoints use 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.

Tutorial mais recente Mais>

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