oktatas:web:back-end_framework:laravel:laravel_rest_api:dolgozok
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.
Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
oktatas:web:back-end_framework:laravel:laravel_rest_api:dolgozok [2023/05/16 23:26] – [Dolgozó törlése] admin | oktatas:web:back-end_framework:laravel:laravel_rest_api:dolgozok [2025/08/01 11:18] (aktuális) – eltávolítva admin | ||
---|---|---|---|
Sor 1: | Sor 1: | ||
- | [[oktatas: | ||
- | |||
- | ====== Laravel API kezdés ====== | ||
- | |||
- | * **Szerző: | ||
- | * Copyright (c) Sallai András, 2021, 2023 | ||
- | * Licenc: [[https:// | ||
- | * Web: https:// | ||
- | |||
- | ===== Projekt ===== | ||
- | |||
- | Hozzuk létre a projektet: | ||
- | composer create-project laravel/ | ||
- | |||
- | Lépjünk be könyvtárba, | ||
- | cd emp | ||
- | php artisan serve | ||
- | |||
- | ===== Adatbázis ===== | ||
- | |||
- | Használhatunk többféle adatbázis, itt most SQLite-t fogunk használni. | ||
- | |||
- | |||
- | A database könyvtárban **hozzuk létre** az SQLite adatbázist, | ||
- | egy üres fájl formájában: | ||
- | |||
- | * database/ | ||
- | |||
- | |||
- | **Szerkesszük** a **.env** fájlt, írjuk bele milyen adatbázist használunk. | ||
- | |||
- | <code ini .env> | ||
- | DB_CONNECTION=sqlite | ||
- | </ | ||
- | |||
- | A MySQL-ra vonatkozó beállításokat tegyük megjegyzésbe. | ||
- | |||
- | ===== Routes ===== | ||
- | |||
- | A routes vagy magyarul útválasztásban határozzuk meg, milyen végpontokat érhetünk el, és a végpontokat elérve, mi kell történjen. | ||
- | |||
- | Szerkesszük a routes/ | ||
- | |||
- | <code php routes/ | ||
- | <?php | ||
- | |||
- | use Illuminate\Http\Request; | ||
- | use Illuminate\Support\Facades\Route; | ||
- | |||
- | /* | ||
- | |-------------------------------------------------------------------------- | ||
- | | API Routes | ||
- | |-------------------------------------------------------------------------- | ||
- | | | ||
- | | Here is where you can register API routes for your application. These | ||
- | | routes are loaded by the RouteServiceProvider and all of them will | ||
- | | be assigned to the " | ||
- | | | ||
- | */ | ||
- | |||
- | Route:: | ||
- | return $request-> | ||
- | }); | ||
- | </ | ||
- | |||
- | A két use kezdetű sor lehetővé teszik hogy használjuk a Request és a Route osztályokat. | ||
- | |||
- | A Route:: | ||
- | Töröljük, | ||
- | |||
- | Vegyünk fel egy saját útválasztó bejegyzést, | ||
- | |||
- | <code php routes/ | ||
- | //... | ||
- | Route:: | ||
- | return ' | ||
- | }); | ||
- | |||
- | </ | ||
- | |||
- | A /employees végpontot határoztuk meg és egy névtelen függvényben, | ||
- | |||
- | ==== Ellenőrzés ==== | ||
- | |||
- | Használjuk egy HTTP klienst a teszteléshez. Lehet egy böngésző, | ||
- | |||
- | Készítsünk egy GET kérést a következő címre: | ||
- | http:// | ||
- | |||
- | <note tip> | ||
- | Ügyeljünk arra, hogy fusson a szerver. Ha valamiért leállítottuk, | ||
- | </ | ||
- | |||
- | ==== Gyakorlat ==== | ||
- | |||
- | * Készítsünk legalább három másik végpontot, GET metódussal, | ||
- | ===== Dolgozók modell és tábla ===== | ||
- | |||
- | Hozzuk létre a dolgozók táblát gyártó PHP osztályt: | ||
- | php artisan make:model Employee --migration | ||
- | |||
- | A < | ||
- | amiből leképezhető az adatbázis tábla. A Laravel alapértelmezetten tartalmaz | ||
- | néhány migrációs táblát, ezek szükségesek a működéshez. | ||
- | |||
- | A migrációs fájlok a **database/ | ||
- | |||
- | Szerkesszük a database/ | ||
- | A * helyén az aktuális dátum szerepel. | ||
- | |||
- | <code php database/ | ||
- | //... | ||
- | |||
- | public function up() | ||
- | { | ||
- | Schema:: | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | }); | ||
- | } | ||
- | |||
- | //... | ||
- | </ | ||
- | |||
- | Ezt követően a táblák elkészíthetők | ||
- | |||
- | Hozzuk létre a táblákat: | ||
- | php artisan migrate | ||
- | |||
- | |||
- | |||
- | További lehetőségek a migrációs fájlokban: | ||
- | <code php> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | </ | ||
- | |||
- | ==== Tábla frissítése ==== | ||
- | |||
- | Ha szeretnénk javítani a migrációs állományt, | ||
- | |||
- | <note important> | ||
- | |||
- | php artisan migrate: | ||
- | |||
- | ===== Útválasztás javítása ===== | ||
- | |||
- | Vegyük használatba az útválasztóban az Employee osztályt: | ||
- | |||
- | <code php routes/ | ||
- | use App\Models\Employee; | ||
- | |||
- | //... | ||
- | |||
- | Route:: | ||
- | return Employee:: | ||
- | }); | ||
- | </ | ||
- | |||
- | Ellenőrizzük Insomnia-ban: | ||
- | * Metódus: GET | ||
- | * URL: http:// | ||
- | |||
- | A tábla üres, de 200-s kódot kell kapjunk. | ||
- | |||
- | |||
- | ===== A post metódus ===== | ||
- | |||
- | Szeretnénk új dolgozót felvenni. Ehhez engedélyezzük a **name**, **city** és **salary** mezők | ||
- | megadását: | ||
- | |||
- | <code php app/ | ||
- | //... | ||
- | class Employee extends Model | ||
- | { | ||
- | use HasFactory; | ||
- | | ||
- | protected $fillable = [ | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ]; | ||
- | } | ||
- | </ | ||
- | |||
- | A routingban beállítunk egy dolgozót: | ||
- | |||
- | <code php routes/ | ||
- | //... | ||
- | |||
- | Route:: | ||
- | return Employee:: | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | }); | ||
- | </ | ||
- | |||
- | Ellenőrizzük egy POST kéréssel az Insomnia-ban. | ||
- | Nézzük meg az adatbázisban az új dolgozót. | ||
- | |||
- | Így most, mindig ezt a felhasználót fogja felvenni. | ||
- | A következő fejezetben megoldjuk, hogy a bejövő | ||
- | HTTP kérésből vegyük a dolgozó adatait. | ||
- | |||
- | |||
- | |||
- | ===== A dolgozó kontroller ===== | ||
- | |||
- | Hozzunk létre egy Employee nevű kontrollert: | ||
- | |||
- | php artisan make: | ||
- | |||
- | Kapcsolók: | ||
- | * A < | ||
- | * A < | ||
- | |||
- | A create és edit metódusok nem szükségesek REST API készítése során. | ||
- | |||
- | Szerkesszük az EmployeeController.php fájlt. Szükség van az Employee modellre, vegyük azt használatba: | ||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | use App\Models\Employee; | ||
- | |||
- | </ | ||
- | |||
- | |||
- | Az index függvényben kérjük le az összes dolgozó adatait: | ||
- | |||
- | <code php> | ||
- | public function index() | ||
- | { | ||
- | return Employee:: | ||
- | } | ||
- | </ | ||
- | |||
- | Állítsuk be az útválasztás: | ||
- | |||
- | <code php routes/ | ||
- | use App\Http\Controllers\EmployeeController; | ||
- | |||
- | //... | ||
- | |||
- | Route:: | ||
- | </ | ||
- | |||
- | A [EmployeeController:: | ||
- | szeretnénk az index metódust hívni, ha valaki a /employees végpontra hivatkozik. | ||
- | |||
- | |||
- | |||
- | Ellenőrizzük API klienssel. | ||
- | |||
- | |||
- | Ha szeretnénk dolgozót tárolni egy store() nevű metódust hozunk létre. | ||
- | |||
- | Írjuk meg a store függvényt: | ||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function store(Request $request) | ||
- | { | ||
- | return Employee:: | ||
- | } | ||
- | </ | ||
- | |||
- | Írjunk hozzá útválasztást: | ||
- | |||
- | <code php routes/ | ||
- | use App\Http\Controllers\EmployeeController; | ||
- | |||
- | //... | ||
- | |||
- | Route:: | ||
- | |||
- | Route:: | ||
- | |||
- | </ | ||
- | |||
- | Teszteljük API klienssel. | ||
- | JSON tartalmat küldünk. Insomnia esetén figyeljük meg a " | ||
- | beállításra kerül a " | ||
- | |||
- | ==== Válaszkód küldése ==== | ||
- | |||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function store(Request $request) | ||
- | { | ||
- | $employees = Employee:: | ||
- | return response($employees, | ||
- | } | ||
- | </ | ||
- | |||
- | A sikeres létrehozást 201-s válaszkóddal jelezzük. | ||
- | |||
- | |||
- | ==== Validáció beállítása ==== | ||
- | |||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function store(Request $request) | ||
- | { | ||
- | $request-> | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | $employees = Employee:: | ||
- | return response($employees, | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Egyetlen dolgozó lekérdezése ===== | ||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function show($id) | ||
- | { | ||
- | return Employee:: | ||
- | } | ||
- | </ | ||
- | |||
- | Írjunk hozzá útválasztást: | ||
- | <code php routes/ | ||
- | Route:: | ||
- | </ | ||
- | |||
- | A végpont után írt {id} az show() metódusban elérhető paraméterként a kontrollerben. | ||
- | |||
- | |||
- | |||
- | ===== Dolgozó módosítása ===== | ||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function update(Request $request, $id) | ||
- | { | ||
- | $employee = Employee:: | ||
- | $employee-> | ||
- | return $employee; | ||
- | } | ||
- | </ | ||
- | |||
- | Írjunk hozzá útválasztást: | ||
- | <code php routes/ | ||
- | //... | ||
- | Route:: | ||
- | </ | ||
- | |||
- | |||
- | Ellenőrizzük API klienssel. | ||
- | |||
- | ===== Dolgozó törlése ===== | ||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function destroy($id) | ||
- | { | ||
- | return Employee:: | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | Írjunk hozzá útávlasztást: | ||
- | |||
- | <code php routes/ | ||
- | //... | ||
- | Route:: | ||
- | </ | ||
- | |||
- | Ellenőrizzük API klienssel. | ||
- | |||
- | Siker esetén 1-el tér vissza. | ||
- | |||
- | ===== Összes erőforrás ===== | ||
- | |||
- | Az összes CRUD műveletet egyetlen útválasztó bejegyzéssel megoldhatjuk: | ||
- | |||
- | <code php routes/ | ||
- | use App\Http\Controllers\EmployeeController; | ||
- | |||
- | //... | ||
- | |||
- | Route:: | ||
- | |||
- | /* | ||
- | Route:: | ||
- | Route:: | ||
- | Route:: | ||
- | Route:: | ||
- | Route:: | ||
- | */ | ||
- | </ | ||
- | |||
- | Ellenőrizzük, | ||
- | php artisan route:list | ||
- | |||
- | Ellenőrizzük API klienssel. Cím: | ||
- | http:// | ||
- | |||
- | ===== Keresés ===== | ||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function search($name) | ||
- | { | ||
- | return Employee:: | ||
- | } | ||
- | </ | ||
- | |||
- | Routing szerkesztése: | ||
- | |||
- | <code php routes/ | ||
- | use App\Http\Controllers\EmployeeController; | ||
- | |||
- | //... | ||
- | |||
- | |||
- | |||
- | Route:: | ||
- | |||
- | </ | ||
- | |||
- | Ellenőrizzük API klienssel. | ||
- | |||
- | Például: | ||
- | http:// | ||
- | |||
- | ===== Sanctum ===== | ||
- | A csomagok (package) között található a Sanctum: | ||
- | * https:// | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | <code php routes/ | ||
- | use App\Http\Controllers\EmployeeController; | ||
- | |||
- | //... | ||
- | |||
- | Route:: | ||
- | // Route:: | ||
- | // Route:: | ||
- | // Route:: | ||
- | |||
- | |||
- | Route:: | ||
- | Route:: | ||
- | }); | ||
- | |||
- | Route:: | ||
- | return $request-> | ||
- | }); | ||
- | |||
- | </ | ||
- | |||
- | Ellenőrizzük: | ||
- | http:// | ||
- | |||
- | A következő hibát kapjuk: | ||
- | Route [login] not defined. | ||
- | |||
- | |||
- | Állítsuk be fejlécben -> " | ||
- | Accept application/ | ||
- | |||
- | A következő választ kapjuk: | ||
- | < | ||
- | { | ||
- | " | ||
- | } | ||
- | </ | ||
- | |||
- | ==== Auth kontroller ==== | ||
- | |||
- | php artisan make: | ||
- | |||
- | |||
- | <code php app/ | ||
- | <?php | ||
- | |||
- | namespace App\Http\Controllers; | ||
- | |||
- | use Illuminate\Http\Request; | ||
- | |||
- | use App\Models\User; | ||
- | use Illuminate\Http\Response; | ||
- | use Illuminate\Support\Facades\Hash; | ||
- | use Illuminate\Support\facades\Auth; | ||
- | |||
- | class AuthController extends Controller | ||
- | { | ||
- | public function register(Request $request) { | ||
- | $fields = $request-> | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | $user = User:: | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | $token = $user-> | ||
- | $response = [ | ||
- | ' | ||
- | ' | ||
- | ]; | ||
- | return response($response, | ||
- | } | ||
- | public function login(Request $request) { | ||
- | if( Auth:: | ||
- | |||
- | $authUser = Auth:: | ||
- | $success[ " | ||
- | $success[ " | ||
- | |||
- | return response( $success); | ||
- | |||
- | }else { | ||
- | |||
- | return response( "Hiba! A bejelentkezés sikertelen", | ||
- | } | ||
- | } | ||
- | public function logout( Request $request ) { | ||
- | auth( " | ||
- | return response()-> | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | Az AuthController tartalmát, akár be is másolhatjuk, | ||
- | |||
- | <code php> | ||
- | use App\Models\User; | ||
- | use Illuminate\Http\Response; | ||
- | use Illuminate\Support\Facades\Hash; | ||
- | use Illuminate\Support\facades\Auth; | ||
- | //... | ||
- | </ | ||
- | |||
- | |||
- | Regisztrációnál a jelszó elkérhető kétszer: | ||
- | <code javascript> | ||
- | $validator = Validator:: | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | ]); | ||
- | </ | ||
- | |||
- | ==== Regisztráció ==== | ||
- | Az api számára is fel kell vennünk felhasználókat az azonosításhoz. | ||
- | Használhatunk hozzá egy REST API klienst, például Insomnia. | ||
- | |||
- | Fejléc: | ||
- | Accept application/ | ||
- | |||
- | Ezt küldjük: | ||
- | |||
- | < | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | Eredmény: | ||
- | < | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | }, | ||
- | " | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | ==== Keresés azonosítással ==== | ||
- | |||
- | Insomnia-ban: | ||
- | * Auth fül | ||
- | * Kiválasztjuk: | ||
- | * Token: 3|7eBr5iAUPgqQz3lxIFgC72Yh3ERO76g1MyuHNOGD | ||
- | |||
- | * [Send] | ||
- | |||
- | ==== Útválasztás ==== | ||
- | |||
- | <code php> | ||
- | Route:: | ||
- | Route:: | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ===== Kilépés ===== | ||
- | |||
- | <code php app/ | ||
- | //... | ||
- | |||
- | public function logout(Request $request) { | ||
- | auth()-> | ||
- | return [ | ||
- | ' | ||
- | ]; | ||
- | } | ||
- | </ | ||
- | |||
- | Útválasztás: | ||
- | <code php routes/ | ||
- | Route:: | ||
- | Route:: | ||
- | Route:: | ||
- | }); | ||
- | </ | ||
- | |||
- | |||
- | Teszteléshez: | ||
- | http:// | ||
- | |||
oktatas/web/back-end_framework/laravel/laravel_rest_api/dolgozok.1684272377.txt.gz · Utolsó módosítás: 2023/05/16 23:26 szerkesztette: admin