Telepíts egy új Laravel csomagot:
laravel new real_estates_api
válaszd a breeze -t és az api-t és és a mysql-t
nyisd meg a mappát vagy:
cd real-estates-api
lépj be
állítsd be a .env fájl tartalmát:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=real_estates
DB_USERNAME=root
DB_PASSWORD=
php artisan migrate
3. Migráció létrehozása az apartments táblához
Hozz létre egy migrációt az apartments tábla számára:
php artisan make:migration create_apartments_table
Szerkeszd a database/migrations/xxxx_xx_xx_xxxxxx_create_apartments_table.php fájlt:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
public function up(): void
{
Schema::create('apartments', function (Blueprint $table) {
$table->id();
$table->string('address');
$table->string('city');
$table->string('postal_code');
$table->integer('size');
$table->integer('rooms');
$table->integer('price');
$table->string('owner_name');
$table->string('owner_phone');
$table->text('description')->nullable();
$table->string('image_url')->nullable();
$table->timestamps();
});
Futtasd a migrációt:
php artisan migrate
4. Modell létrehozása
Hozz létre egy modellt az apartments táblához:
php artisan make:model Apartment
Nyisd meg a app/Models/Apartment.php fájlt és szerkeszd:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Apartment extends Model
{
use HasFactory;
protected $fillable = [
'address', 'city', 'postal_code', 'size', 'rooms',
'price', 'owner_name', 'owner_phone', 'description', 'image_url'
];
}
A $fillable tömb biztosítja, hogy ezek az adatok tömegesen kitölthetők (mass assignment).
5. Controller létrehozása
Készítsd el az API controllert:
php artisan make:controller ApartmentController --api
Nyisd meg a app/Http/Controllers/ApartmentController.php fájlt és szerkeszd:
namespace App\Http\Controllers;
use App\Models\Apartment;
use Illuminate\Http\Request;
class ApartmentController extends Controller
{
// **Összes lakás lekérése**
public function index()
{
return response()->json(['status' => 'success', 'data' => Apartment::all()], 200);
}
// **Egy adott lakás lekérése ID alapján**
public function show($id)
{
$apartment = Apartment::find($id);
if (!$apartment) {
return response()->json(['status' => 'error', 'message' => 'Lakás nem található.'], 404);
}
return response()->json(['status' => 'success', 'data' => $apartment], 200);
}
// **Új lakás létrehozása**
public function store(Request $request)
{
$request->validate([
'address' => 'required|string',
'city' => 'required|string',
'postal_code' => 'required|string',
'size' => 'required|integer',
'rooms' => 'required|integer',
'price' => 'required|integer',
'owner_name' => 'required|string',
'owner_phone' => 'required|string',
'description' => 'nullable|string',
'image_url' => 'nullable|string',
]);
$apartment = Apartment::create($request->all());
return response()->json(['status' => 'success', 'message' => 'Lakás sikeresen létrehozva.', 'data' => $apartment], 201);
}
// **Lakás adatainak frissítése**
public function update(Request $request, $id)
{
$apartment = Apartment::find($id);
if (!$apartment) {
return response()->json(['status' => 'error', 'message' => 'Lakás nem található.'], 404);
}
$request->validate([
'address' => 'string',
'city' => 'string',
'postal_code' => 'string',
'size' => 'integer',
'rooms' => 'integer',
'price' => 'integer',
'owner_name' => 'string',
'owner_phone' => 'string',
'description' => 'nullable|string',
'image_url' => 'nullable|string',
]);
$apartment->update($request->all());
return response()->json(['status' => 'success', 'message' => 'Lakás sikeresen frissítve.', 'data' => $apartment], 200);
}
// **Lakás törlése**
public function destroy($id)
{
$apartment = Apartment::find($id);
if (!$apartment) {
return response()->json(['status' => 'error', 'message' => 'Lakás nem található.'], 404);
}
$apartment->delete();
return response()->json(['status' => 'success', 'message' => 'Lakás sikeresen törölve.'], 204);
}
}
6. API útvonal hozzáadása
Nyisd meg a routes/api.php fájlt, és add hozzá az útvonalakat:
use App\Http\Controllers\ApartmentController;
use Illuminate\Support\Facades\Route;
Route::apiResource('apartments', ApartmentController::class);
Ez automatikusan létrehozza az összes szükséges REST API végpontot:
7. API tesztelése
Indítsd el a Laravel szervert:
php artisan serve
http://127.0.0.1:8000/api/apartments
id alapon való lekérés esetén apartments/3 vagyis /id száma
Tesztek:
Nincsenek megjegyzések:
Megjegyzés küldése