Resource štandardy, ktoré sa oplatí dodržiavať

xvital
napísal @xvital (242), pred 3 mesiacmi

Už vieme ako definovať route a príslušný controller. Je ideálny čas na to, podchytiť best practice v routovaní a spracovaní požiadavok.

Resourceful?

Resource (prostriedok, zdroj) je v našom prípade niečo, nad čím operujeme. Teda konkrétny model. Pri návrhu aplikácie sa typicky zamýšľame nad tým, aké akcie budeme nad daným modelom vykonávať (čo s ním bude možné v rámci aplikácie robiť). Ak je controller resourceful, znamená to, že obsahuje všetky nižšie spomenuté akcie.

HTTP verbs

Protokol HTTP obsahuje niekoľko metód, ako odosielať požiadavku. Ide o slovesá, ktoré (veľmi trefne) popisujú, akú akciu ideme nad resourcom vykonať. Ide o týchto 5 metód/akcií: GET, POST, PUT, PATCH, DELETE.

GET získanie resourcu (R) zo servera
POST odoslanie R na server
PUT zmena R (ako celok, doslova zámena za iný, zmazanie starého a nahranie nového)
PATCH zmena R (jeho časti)
DELETE zmazanie R

Route akcie

Ak by sme chceli nad modelom vykonávať všetky akcie, môžeme ich definovať explicitne takto:

Route::get('/articles', 'ArticleController@index');
Route::post('/articles', 'ArticleController@store');
Route::put('/articles/{article}', 'ArticleController@update');
Route::patch('/articles/{article}', 'ArticleController@update');
Route::delete('/article/{article}', 'ArticleController@destroy');

Laravel však ponúka omnoho jednoduchšiu cestu s rovnakým výsledkom:

Route::resource('articles', 'ArticleController');

Ak chcete využiť len niektoré akcie, metódami only a except môžete definíciu obmedziť

// only
Route::resource('photos', 'PhotoController')->only([
    'index', 'show'
]);

// except
Route::resource('articles', 'ArticleController')->except([
    'create', 'store', 'update', 'destroy'
]);

Úplne najväčší kanón je definícia viacerých resource-ov naraz:

Route::resources([
    'articles' => 'ArticleController',
    'comments' => 'CommentController'
]);

V controlleri ArticleController zas nemusíte pracne definovať metódy pre jednotlivé akcie. Ak použijete pri vytváraní controlleru prepínač -r

php artisan make:controller ArticleController -r

vygenerovaný controller bude tzv. resourceful – bude obsahovať všetky metódy, ktoré potrebujete. Stačí len implementovať.

Prečo dodržiavť štandardy?

Ide o dôležitý štandard hlavne v prípade, že aplikácia mení majiteľa, mení sa tím, alebo prichádza nová posila. Pri použití štandardných URI a akcií controllera je veľmi jednoduche s aplikáciou (v tomto ohľade) ďalej pracovať a nie je potrebné skúmať aké názvoslovie zvolil kolega pred vami.

Ak teda chcete priniesť aplikáciou jej majiteľovi čo najvyššiu hodnotu, je aj budúca udržateľnosť aplikácie jedným z bodov, na ktorý by ste mali pri návrhu myslieť.

Ešte nie si členom CZ/SK Laravel komunity?

To možeš ľahko zmeniť. Registrácia je zdarma a ako registrovaný člen získaš množstvo výhod. Prečítaj si prečo by si mal byť členom.

Prihlásiť sa Zaregistrovať

Mohlo by Ťa zaujímať: