Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:laravel:laravel_rest_api:gyors_kezdes

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
oktatas:web:back-end_framework:laravel:laravel_rest_api:gyors_kezdes [2024/03/23 13:18] – [Laravel REST API kezdés] adminoktatas:web:back-end_framework:laravel:laravel_rest_api:gyors_kezdes [2025/08/01 11:18] (aktuális) – eltávolítva admin
Sor 1: Sor 1:
-[[oktatas:web:back-end_framework:laravel:laravel_rest_api|< Laravel REST API]] 
- 
-====== Laravel REST API kezdés ====== 
- 
-  * **Szerző:** Sallai András 
-  * Copyright (c) 2023, Sallai András 
-  * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] 
-  * Web: https://szit.hu 
- 
-===== Projekt létrehozása ===== 
- 
-Hozzuk létre a projektet: 
-  composer create-project laravel/laravel app01 
- 
-===== Projekt indítása ===== 
- 
-Lépjünk be könyvtárba, majd indítsuk el a szervert: 
-  cd app01 
-  php artisan serve 
- 
-===== Adatbázis ===== 
- 
-==== MariaDB/MySQL ==== 
- 
-Hozzuk létre az adatbázis: 
- 
-<code mysql> 
-create database emp 
-character set utf8 
-collate utf8_hungarian_ci; 
- 
-grant all privileges 
-on emp.* 
-to emp@localost 
-identified by 'titok'; 
-</code> 
- 
- 
-Szerkesszük a .env fájlt. Állítsuk be az adatbázishoz tartozó adatokat: 
- 
-<code ini> 
-DB_CONNECTION=mysql 
-DB_HOST=127.0.0.1 
-DB_PORT=3306 
-DB_DATABASE=laravel 
-DB_USERNAME=root 
-DB_PASSWORD= 
-</code> 
- 
-==== SQLite ==== 
- 
-Vegyük fel az sqlite beállítást, tegyük megjegyzésbe a mysql adatbázis bejegyzést: 
-<code ini> 
-DB_CONNECTION=sqlite 
- 
-# DB_CONNECTION=mysql 
-# DB_HOST=127.0.0.1 
-# DB_PORT=3306 
-# DB_DATABASE=laravel 
-# DB_USERNAME=root 
-# DB_PASSWORD= 
-</code> 
- 
-Hozzunk létre a database könyvtárban egy database.sqltie üres állományt. 
- 
-  * database/database.sqlite 
- 
- 
-===== Model, migráció és kontroller ===== 
- 
-Model, migrációs fájl és a kontroller létrehozása: 
-  php artisan make:model Employee --migration --controller --api 
- 
-A <nowiki>--api</nowiki> hatására létrehozza a következő metódusokat: 
-  * index() 
-  * store(Request $request) 
-  * show(Employee $employee) 
-  * <nowiki>update(Request $request, Employee \$employee)</nowiki> 
-  * destroy(Employee $employee) 
- 
-Model, migrációs fájl és kontroller létrehozása rövid kapcsolókkal. 
-  php artisan make:model Employee -mc --api 
- 
-===== Migrációs fájl ===== 
- 
-Függvénnyel megadható mezők rövid listája: 
- 
- 
-  * binary() 
-  * id() 
-  * char() 
-  * year() 
-  * double() 
-  * float() 
-  * integer() 
-  * date() 
-  * string() 
-  * text() 
-  * time() 
-  * timestamp() 
-  * tinyText() 
-  * boolean() 
-  * dateTime() 
-  * tinyInteger() 
- 
- 
- 
-<code php> 
-$table->increments('id'); 
-$table->string('name', 50); 
-$table->string('city', 50)->nullable(); 
-$table->double('salary')->nullable(); 
-$table->date('birth')->nullable(); 
-$table->integer('rank_id')->unsigned()->nullable(); 
-$table->binary('image')->nullable();  
-</code> 
- 
- 
-Az összes mezőtípus elérhető [[https://laravel.com/docs/9.x/migrations#available-column-types|itt]] 
- 
- 
-==== Migrációs fájl kiegészítése ==== 
- 
-Tegyük fel, hogy egy ilyen fájl jön létre: 
-  * database/migrations/2022_04_16_152020_create_employees_table.php 
- 
-Szerkesszük a fájlt. 
- 
-<code php> 
-    public function up() 
-    { 
-        Schema::create('employees', function (Blueprint $table) { 
-            $table->id(); 
-            $table->timestamps(); 
-        }); 
-    } 
-</code> 
- 
-Az up() függvény: 
-<code php> 
-    public function up() 
-    { 
-        Schema::create('employees', function (Blueprint $table) { 
-            $table->increments('id'); 
-            $table->string('name', 50); 
-            $table->string('city', 50); 
-            $table->decimal('salary', 5, 2); 
-            $table->timestamps(); 
-        }); 
-    } 
-</code> 
- 
-Készítsük el az adatbázist: 
-  php artisan migrate 
- 
-==== Kész táblák frissítése ==== 
- 
-  php artisan migrate:refresh 
- 
-A parancs törli a meglévő adatokat.  
- 
-Ha szeretnénk megőrizni az adatokat, akkor külön migrációs fájlba írjuk le a változásokat és csak azt hajtsuk végre. 
- 
-==== Migráció visszavonása ==== 
- 
-Utolsó migráció visszavonás 
-  php artisan migrate:rollback 
- 
-Összes migráció visszavonása: 
-  php artisan migrate:reset 
- 
-===== Fillable ===== 
- 
-Biztonsági okokból alapértelmezetten minden mező kitöltése tiltott. 
-Engedélyezzük a kitöltendő mezőket a modellben. Nélküle nem lehetséges 
-műveletek: create, update. 
- 
-Szerkesszük: 
-  * app/Http/Models/Employee.php 
- 
-Szúrjuk be a következő sort: 
-<code php> 
-protected $fillable = ['name', 'city', 'salary']; 
-</code> 
- 
-A teljes Employee.php: 
-<code php> 
-<?php 
- 
-namespace App\Models; 
- 
-use Illuminate\Database\Eloquent\Factories\HasFactory; 
-use Illuminate\Database\Eloquent\Model; 
- 
-class Employee extends Model 
-{ 
-    use HasFactory; 
-    protected $fillable = [ 
-        'name',  
-        'city',  
-        'salary' 
-    ]; 
-} 
-</code> 
- 
- 
-===== A kontroller fejlesztése ===== 
- 
-A következő fájlt kell szerkeszteni: 
-  * app/Http/Controllers/EmployeeController.php 
- 
-==== Eredeti ==== 
- 
-<code php> 
-public function index() 
-{ 
- 
-} 
- 
-public function store(Request $request) 
-{ 
- 
-} 
- 
-public function show(Employee $employee) 
-{ 
- 
-} 
- 
-public function update(Request $request, Employee $employee) 
-{ 
- 
-} 
- 
-public function destroy(Employee $employee) 
-{ 
- 
-} 
-</code> 
- 
- 
-==== Fejlesztés ==== 
- 
-Vegyük használatba az Employee modellt. Az Employee model segítségével elvégezhetők a CRUD műveletek. 
- 
-<note tip> 
-Ügyeljünk arra, hogy az Employee modellben a $fillable tömb legyen kitöltve. 
-</note> 
- 
-<code php> 
-//... 
-use App\Models\Employee; 
-//... 
- 
-public function index() 
-{ 
-    return Employee::all(); 
-} 
- 
-public function store(Request $request) 
-{ 
-    return Employee::create($request->all()); 
-} 
- 
-public function show($id) 
-{ 
-    return Employee::find($id); 
-} 
- 
-public function update(Request $request, $id) 
-{ 
-    $employee = Employee::find($id); 
-    $employee->update($request->all()); 
-    return $employee; 
-} 
- 
-public function destroy($id) 
-{ 
-    return Employee::destroy($id); 
-} 
-</code> 
- 
- 
-==== A response() függvény ==== 
-Ajánlott a visszaadott értéket a **response()** függvénybe zárni: 
-<code php> 
-    public function index() 
-    { 
-        return response(Employee::all()); 
-    } 
-</code> 
- 
-Így visszaadhatunk **visszatérési kódot**, beállíthatjuk a visszatérés típusát. 
-<code php> 
-    public function index() 
-    { 
-        return response(Employee::all(), 200) 
-            ->header('Content-Type', 'application/json'); 
-    } 
-</code> 
- 
- 
-Használhatjuk a setStatusCode() függvényt is: 
-<code php> 
-    public function index() 
-    { 
-        $employees = Employee::all(); 
-        return response()->json([ 
-            'success' => true, 
-            'employees' => $employees 
-        ])->setStatusCode(200); 
-    } 
-</code> 
- 
-Külön változó: 
- 
-<code php> 
-    public function index() 
-    { 
-        $employees = Employee::all(); 
-        $response = [ 
-            'success' => true, 
-            'employees' => $employees 
-        ]; 
-        return response() 
-            ->json($response) 
-            ->setStatusCode(200); 
-    } 
-</code> 
- 
- 
-Link: 
-  * https://laravel.com/docs/10.x/responses (2023) 
- 
-===== JSON ===== 
- 
-<code php> 
-    public function index() 
-    { 
-        $employees = Employee::all(); 
-        return response()->json($employees); 
-    } 
-</code> 
- 
-<code php> 
-    public function index() 
-    { 
-        $employees = Employee::all(); 
-        return response()->json($employees, 200); 
-    } 
-</code> 
- 
- 
-<code php> 
-    public function index() 
-    { 
-        $employees = Employee::all(); 
-        return response()->json([ 
-            'success' => true, 
-            'employees' => $employees 
-        ], 200); 
-    } 
-</code> 
- 
-===== Router ===== 
- 
-<code php> 
-use App\Http\Controllers\EmployeeController; 
- 
-//... 
- 
-Route::get('employees', [EmployeeController::class, 'index']); 
-Route::post('employees', [EmployeeController::class, 'store']); 
-Route::get('employees/{id}', [EmployeeController::class, 'show']); 
-Route::put('employees/{id}', [EmployeeController::class, 'update']); 
-Route::delete('employees/{id}', [EmployeeController::class, 'destroy']); 
- 
-</code> 
- 
-===== Validation ===== 
- 
-<code php> 
-    public function store(Request $request) 
-    { 
-        $request->validate([ 
-            'name' => 'required', 
-            'city' => 'required', 
-            'salary' => 'required' 
-        ]); 
-        $employee = new Employee; 
-        $employee->name = $request->name; 
-        $employee->city = $request->city; 
-        $employee->salary = $request->salary; 
-        $employee->save(); 
-        return response($employee, 201); 
-    } 
-</code> 
- 
-Validációs lehetőségek [[https://laravel.com/docs/9.x/validation#available-validation-rules|itt]] 
- 
-===== Cors ===== 
- 
-A Cors következő helyen állítható: 
-  * config/cors.php 
- 
-Alapértelmezetten minden engedélyezve van. 
- 
-===== Admin felhasználó ===== 
-==== Seeder használata ==== 
- 
-<code cmd> 
-php artisan make:seeder AdminSeeder 
-</code> 
- 
-A database/seeders/AdminSeeder.php fájlban: 
-<code php> 
-use App\Models\User; 
-//... 
- 
-    public function run() 
-    { 
-        User::create([ 
-            'name' => 'admin', 
-            'email' => 'admin@zold.lan', 
-            'email_verified_at' => now(), 
-            'password' => bcrypt('titok') 
-        ]); 
-    } 
-//... 
-</code> 
- 
-A Seeder futtatása: 
-  php artisan db:seed --class=AdminSeeder 
- 
- 
-==== is_admin mező esetén ==== 
- 
-<code php> 
-use App\Models\User; 
-//... 
- 
-    public function run() 
-    { 
-        User::create([ 
-            'name' => 'admin', 
-            'email' => 'admin@zold.lan', 
-            'email_verified_at' => now(), 
-            'is_admin' => 1, 
-            'password' => bcrypt('titok') 
-        ]); 
-    } 
-//... 
-</code> 
-==== Tinker használata ==== 
- 
-Indítsuk el a tinkert: 
-<code> 
-php artisan tinker 
-</code> 
- 
-Másoljuk be: 
- 
-<code php> 
-User::create(['name' => 'admin', 'email' => 'admin@zold.lan', 'email_verified_at' => now(), 'password' => bcrypt('titok')]); 
-</code> 
- 
- 
-Felhasználó keresése: 
-<code php> 
-App\Models\User::find(1); 
-</code> 
- 
-Az összes lekérdezése: 
-<code php> 
-App\Models\User::all(); 
-</code> 
- 
-Felhasználó törlése: 
-<code php> 
-App\Models\User::find(2)->delete(); 
-</code> 
- 
-===== Függelék ===== 
-==== Segítség ==== 
- 
-A kontrollerben információk kiíratása: 
- 
-<code php> 
-echo "<pre>"; 
-print_r($request->file()); 
-</code> 
- 
- 
-<code> 
-dd($request); 
-</code> 
  
oktatas/web/back-end_framework/laravel/laravel_rest_api/gyors_kezdes.1711196313.txt.gz · Utolsó módosítás: 2024/03/23 13:18 szerkesztette: admin