Aprofundando-se mais no uso de API RESTful, vamos exemplicar a criação de rotas e controladores:
Criação do Controlador: Primeiro, você precisa criar um controlador que gerenciará as ações da API relacionadas a um determinado recurso. Vamos usar o exemplo de um recurso "Post".
Para criar o controlador, abra o terminal ou prompt de comando e execute o seguinte comando Artisan:
php artisan make:controller PostController --api
Isso criará um controlador chamado PostController com os métodos específicos para API (index, show, store, update e destroy).
Definição de Rotas: Em seguida, defina as rotas para sua API, especificando o controlador que irá manipular as ações.
Abra o arquivo routes/api.php e adicione as seguintes rotas para o recurso "Post":
<?php
use Illuminate\\\\Http\\\\Request;
use Illuminate\\\\Support\\\\Facades\\\\Route;
Route::apiResource('/posts', 'PostController');
A linha Route::apiResource cria automaticamente todas as rotas necessárias para as ações padrão do controlador (index, show, store, update e destroy). Essas rotas seguem as convenções RESTful.
Implementação do Controlador:
No PostController, implemente os métodos para cada ação:
<?php
namespace App\\\\Http\\\\Controllers;
use App\\\\Models\\\\Post;
use Illuminate\\\\Http\\\\Request;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return response()->json($posts);
}
public function show($id)
{
$post = Post::find($id);
if (!$post) {
return response()->json(['message' => 'Publicação não encontrada'], 404);
}
return response()->json($post);
}
public function store(Request $request)
{
$request->validate([
'title' => 'required|string',
'content' => 'required|string',
]);
$post = Post::create($request->all());
return response()->json($post, 201);
}
public function update(Request $request, $id)
{
$post = Post::find($id);
if (!$post) {
return response()->json(['message' => 'Publicação não encontrada'], 404);
}
$request->validate([
'title' => 'required|string',
'content' => 'required|string',
]);
$post->update($request->all());
return response()->json($post);
}
public function destroy($id)
{
$post = Post::find($id);
if (!$post) {
return response()->json(['message' => 'Publicação não encontrada'], 404);
}
$post->delete();
return response()->json(['message' => 'Publicação removida'], 200);
}
}
Testando a API:
Agora que você criou o controlador e definiu as rotas, sua API está pronta para ser testada. Você pode usar ferramentas como o curl, Postman ou Insomnia para fazer requisições HTTP e verificar as respostas JSON.
Por exemplo, para listar todos os posts, faça uma solicitação GET para a rota /api/posts. Para criar um novo post, faça uma solicitação POST para a mesma rota, passando os dados do post no corpo da requisição.
Lembre-se de que, dependendo dos requisitos de autenticação da sua API, você precisará lidar com a autenticação adequada para proteger as rotas sensíveis.