Amikor API-t kell írnod, előfordulhat, hogy az modellek és a tényleges JSON válaszok között egy átalakító rétegre van szükséged.
Például:
- Lehet, hogy nem szeretnéd
az összes mezőt visszaküldeni az API válaszban.
- Egyes felhasználók csak
bizonyos adatokat láthatnak.
- Szeretnéd formázni az
adatokat (pl. dátumokat szebben megjeleníteni).
- Szeretnéd hozzáadni a
kapcsolódó adatokat az API válaszhoz.
Laravel telepítése és projekt
létrehozása
Ha még nincs Laravel telepítve, előbb ezt futtasd:
composer global require laravel/installer
Majd hozz létre egy új Laravel projektet API támogatással:
laravel new real_estat_laravel
válaszd a jetstream v. breeze, api és
mysql lehetőségeket
Lépj be a mappába:
cd real_estates_api
de inkább nyisd meg a vsc-ben
.env beállítása:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=real_estates
DB_USERNAME=root
DB_PASSWORD=
NE futtasd ezeket, ha van kész
adatbázisod:
php artisan migrate
→
újra létrehozná a táblákat (hibára futhat)
php artisan migrate:fresh
→ törli az adatokat is! (NE használd!)
php artisan make:model Apartment
namespace App\Models;
use
Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Apartment extends Model{
use HasFactory;
public
$timestamps = false; //ez fontos mert különben a post metódusnál a laravel
próbál update dátumokat beszúrni, de olyan oszlop nincs
protected $table = 'apartments'; // Ha az
adatbázisban más a tábla neve
protected $fillable = [
'address',
'city',
'postal_code',
'size',
'rooms',
'price',
'owner_name',
'owner_phone',
'description',
'image_url',
'listed_date'
];
}
Controller:
php
artisan make:controller ApartmentController
Állítsd be:
namespace App\Http\Controllers;
use
App\Models\Apartment;
use Illuminate\Http\Request;
class ApartmentController extends Controller
{
public
function index()
{
return
response()->json(Apartment::all());
}
public function show($id)
{
$apartment = Apartment::find($id);
if (!$apartment) {
return
response()->json(['message' => 'Lakás nem található'], 404);
}
return response()->json($apartment);
}
public
function store(Request $request)
{
$apartment =
Apartment::create($request->all());
return response()->json(['message'
=> 'Lakás sikeresen létrehozva', 'data' => $apartment], 201);
}
public
function update(Request $request, $id)
{
$apartment = Apartment::find($id);
if (!$apartment) {
return
response()->json(['message' => 'Lakás nem található'], 404);
}
$apartment->update($request->all());
return response()->json(['message'
=> 'Lakás sikeresen frissítve', 'data' => $apartment]);
}
public
function destroy($id)
{
$apartment = Apartment::find($id);
if (!$apartment) {
return
response()->json(['message' => 'Lakás nem található'], 404);
}
$apartment->delete();
return response()->json(['message'
=> 'Lakás sikeresen törölve'], 204);
}
}
routes/api.php –ben állítsd be: ( ha nincs ilyen
fájlod, akkor hozd létre, mert nem követted a telepítés lépéseit)
use
App\Http\Controllers\ApartmentController;
Route::apiResource('apartments',
ApartmentController::class);
indítsd a szervert:
php artisan serve
Ezen az útvonalon kapsz vissza minden adatot:
http://127.0.0.1:8000/api/apartments
Így id alapon:
http://127.0.0.1:8000/api/apartments/1
post echo apiban:
próbáld beszúrni:
{
"address":
"Rákóczi út 8.",
"city":
"Litka",
"postal_code":
"3184",
"size":
120,
"rooms":
4,
"price":
"98000000.00",
"owner_name":
"Rácz Péter",
"owner_phone":
"+3620123456878",
"listed_date":
"2025-03-20 07:19:59",
"description":
"Új építésű családi ház csendes környezetben",
"image_url":
"https://example.com/lakas3.jpg"
}
nézd meg milyen id-t kapott írd be a az ulbe és
próbáld módosítani
törlés:
Nincsenek megjegyzések:
Megjegyzés küldése