Nesse artigo/vídeo vamos criar uma API que servirá para:
Somente enviado requisição à uma URL . Podemos dizer que será um CRUD .
Abaixo segue conceitos e comandos na ordem para chegarmos a esse feito da forma mais direta possível.
Detalhes sobre o Laravel recomendo ver antes esse vídeo:
E para mais detalhes ainda sobre sua arquitetura e conceitos e técnicas de PHP recomendo você fazer nosso:
Interface de Programação de Aplicação, cuja sigla API provém do Inglês Application Programming Interface, é um conjunto de rotinas e padrões estabelecidos por um software.
O propósito das APIs é o de simplificar o desenvolvimento de programas e aplicações. Isso permite que o desenvolvedor possa utilizar os serviços fornecidos pelas APIs de seu interesse.
É um conjunto de interfaces no contexto de desenvolvimento Web, geralmente expresso nos formatos XML ou JSON. Atualmente a técnica mais utilizada é REST.
Representational State Transfer (REST), em português Transferência Representacional de Estado, é um estilo de arquitetura de software que define um conjunto de restrições a serem usadas para a criação de web services (serviços Web).
Os Web services que estão em conformidade com o estilo arquitetural REST, denominados Web services RESTful .
Para que uma API seja considerada do tipo RESTful, ela precisa está em conformidade com os seguintes critérios:
Nem todos os serviços que conhecemos respeitam as características citadas acima, mas acidentalmente são chamadas de RESTful
cd /var/www/localhost/htdocs
laravel new artigos
cd artigos/
chmod -R guo+w ./storage
gio open http://localhost/artigos/public/
mysql -u root -p"123456" -e "DROP DATABASE IF EXISTS artigos;CREATE DATABASE artigos"
sed -i 's/DB_PASSWORD=/DB_PASSWORD=123456/g' ./.env
php artisan make:migration create_artigos_table --create=artigos
vim ./database/migrations/*create_arti*
$table->string('titulo');
$table->text('conteudo');
php artisan make:model Artigo
php artisan migrate
php artisan make:controller ArtigoController --resource
Editar o arquivo: vim ./app/Http/Controllers/ArtigoController.php
<?php
namespace App\Http\Controllers;
use App\Models\Artigo as Artigo;
use App\Http\Resources\Artigo as ArtigoResource;
use Illuminate\Http\Request;
class ArtigoController extends Controller {
public function index(){
$artigos = Artigo::paginate(15);
return ArtigoResource::collection($artigos);
}
public function show($id){
$artigo = Artigo::findOrFail( $id );
return new ArtigoResource( $artigo );
}
public function store(Request $request){
$artigo = new Artigo;
$artigo->titulo = $request->input('titulo');
$artigo->conteudo = $request->input('conteudo');
if( $artigo->save() ){
return new ArtigoResource( $artigo );
}
}
public function update(Request $request){
$artigo = Artigo::findOrFail( $request->id );
$artigo->titulo = $request->input('titulo');
$artigo->conteudo = $request->input('conteudo');
if( $artigo->save() ){
return new ArtigoResource( $artigo );
}
}
public function destroy($id){
$artigo = Artigo::findOrFail( $id );
if( $artigo->delete() ){
return new ArtigoResource( $artigo );
}
}
}
Editar o arquivo: vim ./routes/api.php
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArtigoController;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
// List artigos
Route::get('artigos', [ArtigoController::class, 'index']);
// List single artigo
Route::get('artigo/{id}', [ArtigoController::class, 'show']);
// Create new artigo
Route::post('artigo', [ArtigoController::class, 'store']);
// Update artigo
Route::put('artigo/{id}', [ArtigoController::class, 'update']);
// Delete artigo
Route::delete('artigo/{id}', [ArtigoController::class,'destroy']);
php artisan make:resource Artigo
vim ./app/Http/Resources/Artigo.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Artigo extends JsonResource {
public function toArray($request){
//return parent::toArray($request);
return [
'id' => $this->id,
'titulo' => $this->titulo,
'conteudo' => $this->conteudo
];
}
/* public function with( $request ){
return [
'version' => '1.0.0',
'author_url' => url('https://terminalroot.com.br')
];
} */
}
Para testar a API vamos utilizar Postman. Veja esse artigo para saber como instalar o Postman:
POST
http://localhost/artigos/public/api/artigo , Headers(KEY → Content-Type) and VALUE(application/json) + Body(raw):{
"titulo": "Primeiro artigo pelo Postman",
"conteudo": "Descrição desse artigo de número um."
}
{
"titulo": "Segundo artigo pelo Postman",
"conteudo": "Descrição desse artigo de número dois."
}
{
"titulo": "Terceiro artigo pelo Postman",
"conteudo": "Descrição desse artigo de número três."
}
GET
http://localhost/artigos/public/api/artigosGET
http://localhost/artigos/public/api/artigo/2PUT
http://localhost/artigos/public/api/artigo/1 , Headers(KEY → Content-Type) and VALUE(application/json) + Body(raw):
{
"titulo": "ATUALIZANDO Primeiro artigo pelo Postman",
"conteudo": "Descrição desse artigo de número um sendo ATUALIZADO."
}
DELETE
http://localhost/artigos/public/api/artigo/2laravel php desenvolvimentoweb