Este projeto é um passo fundamental para entender a arquitetura REST. Ele foca na criação de uma API backend limpa e sem frameworks, gerenciando recursos (livros) através dos verbos HTTP padrões (GET, POST, PUT, DELETE).
- Roteamento Manual: O arquivo
src/api.phpatua como um roteador que analisa o método HTTP ($_SERVER['REQUEST_METHOD']) e o parâmetro da URL ($_GET['id']) para determinar qual ação CRUD deve ser executada. - Dados JSON: A API recebe (
POST,PUT) e envia (GET,POST,PUT) dados exclusivamente no formato JSON, usandofile_get_contents('php://input')para ler o corpo da requisição. - Códigos de Status: Utiliza códigos de status HTTP padrão (e.g.,
200 OK,201 Created,204 No Content,400 Bad Request,404 Not Found) para indicar o resultado da operação. - POO com PDO: As classes
DatabaseeBookControllerisolam a lógica de conexão e interação com o banco de dados SQLite.
- Backend: PHP 7.4+ (POO, Headers HTTP, Manipulação de JSON).
- Banco de Dados: SQLite (via PDO) para persistência.
- Frontend/Teste: JavaScript Vanilla (
fetchAPI) para simular um cliente consumindo a API.
php-rest-api/
├── index.html
├── Database.php
├── BookController.php
├── api.php
├── README.md
├── .gitignore
└── books.sqlite
- Um ambiente de servidor web com PHP.
- Extensão PDO SQLite habilitada.
- Permissão de escrita na pasta
src/para a criação do arquivobooks.sqlite.
-
Crie a estrutura de pastas.
-
Execute o servidor embutido do PHP (a partir da raiz do projeto):
php -S localhost:8001
-
Acesse o painel de testes:
http://localhost:8001/public/index.html.
Use o painel de testes (index.html) e o Console do Desenvolvedor (F12) para validar cada operação:
| Método | URL | Ação | Expectativa |
|---|---|---|---|
| GET | /src/api.php |
Lista todos. | Retorna 200 OK e um array de livros. |
| POST | /src/api.php |
Cria um novo livro. | Retorna 201 Created e o objeto do livro criado. |
| GET | /src/api.php?id=X |
Busca um único livro. | Retorna 200 OK ou 404 Not Found. |
| PUT | /src/api.php?id=X |
Atualiza campos. | Retorna 200 OK e o objeto atualizado. |
| DELETE | /src/api.php?id=X |
Exclui o recurso. | Retorna 204 No Content (corpo da resposta vazio). |
Contribuições são sempre bem-vindas!
Sinta-se à vontade para abrir uma issue com sugestões ou enviar um pull request com melhorias.
📧 Entre em contato pelo LinkedIn
💻 Desenvolvido por Onivaldo Miquelino