Lumen Micro Framework da RESTful API dan foydalanish
Laravel framework bilan ishlaydigan dasturchilarimiz yaxshi bilishsa kerak. Lumen bu mikro-framework bo’lib Laravel framework ostida qurilgan va kichik servislar, mikro web ilovalar bilan ishlash va yaratish uchun mo’ljallangan. Lumenda ishlatiladigan Symfony’s Routing komponentlari, Laravel tomonidan ishlash tezligini oshirish maqsadida FastRoute bilan almashtirilgan. Bu haqida https://github.com/nikic/FastRoute manzili orqali ko’proq ma’lumot olishingiz mumkin.
Ushbu maqolada, oddiy laravel yordamida RESTful API da oddiy loyiha qilib ko’ramiz. Ushbu API maqsadi va ishlash prinsibi kitoblarni saqlash va ularni chop etishga mo’ljallangan.
Iloji boricha sodda tarzda tushuntirishga harakat qilaman.
Lumen ni O’rnatish
Biz lumen bilan ishlashimiz va uni o’rnatishimiz uchun composerdan foydalanamiz. Agarda sizda composer mavjud bo’lmasa oldin o’rnatib olishni maslahat berardim. Ushu loyihani OpenServer orqali yaratdim va sizga ham shunga o’xshash local server dasturlardan foydalanishni maslahat berardim….
Endi composerga «laravel / lumen» to’plamidan «lumen_rest.uz» lumen loyihasini yaratish uchun quyidagi buyruqni kiriting.
composer create-project laravel/lumen lumen_rest.uz
Composer «lumen_rest.uz» nomli katalog yaratadi va barcha lumen fayllari ushbu katalog ichida joylashadi. Laravel Framework bilan ishlaganlar bilishlari mumkin, bizga artisan buyruqlari zarur, mavjud buyruqlarni
php artisan
Buyruqi orqali bilib olishingiz mumkin. Biz loyihamizni localhost (local server) da yaratmoqdamiz. Shu sabab localhost:8000 manzilini brauzerda kiritish orqali saytga kirishimiz mumkin. Buning uchun biz artisan buyruqlaridan biri bo’lgan
php -S localhost:8000 -t public
dan foydalanamiz. (Eski versiyalar uchun php artisan serve)
endilikda localhost:8000 manzili orqali saytimizga kirib loyihamizni ishga tushirishimiz mumkin va natija quyidagi ko’rinishga keladi.
Oldingi versiyalarda (
Sozlamalar (Database Configurations)
Endilikda biz ma’lumotlar bazasini (DB) yaratib olamiz. Ma’lumotlar bazasi uchun PhpMyAdmin yoki boshqa biron mysqli ni qo’llab quvvatlovchi client lardan foydalanish mumkin. Undan oldin esa env.example faylini .env faylga o’zgartiramiz. (C:OSPaneldomainslumen_ret.uz.env yaratilishi kerak).
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=lument_rest (Name Of Database) DB_USERNAME=root (Username) DB_PASSWORD=123456789 (password) |
Sozlamalarni sozlab olgach C:OSPaneldomainslumen_ret.uzbootstrap katalogidan app.php faylini ochib quyidagi maydonlarni kommentariyadan ozod qiling (uncomment).
$app->withFacades();
$app->withEloquent();
Migration
Endi darsimizni asosiy qisimlaridan biriga keldik. Biz ma’lumotlar bazasini yaratib olamiz. Sal yuqoriga qaytaylik. Bizning loyiha kitoblarga asoslangan shunday ekan books degan jadval yaratib olamiz va uning maydonlarini belgilaymiz.
id (int & auto incremented) title ( varchar) author (varchar) isbn (varchar) created_at (timestamp) updated_at (timestamp) |
Loyihamizning ma’lumotlar bazasidagi jadval yuqoridagi 6 ta qisimdan iborat ekan. Yangi jadval yaratish uchun quyidagi buyruqdan foydalanamiz.
php artisan make:migration create_books_table —create=books
public function up() {
Schema::create(‘books’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘title’);
$table->string(‘author’);
$table->string(‘isbn’);
$table->timestamps();
});
}
Model
namespace App;
use IlluminateDatabaseEloquentModel;class
Book extends Model{ protected $fillable = [‘title’, ‘author’, ‘isbn’];
}
?>
namespace AppHttpControllers;
use AppBook;
use AppHttpControllersController;
use IlluminateHttpRequest;
class BookController extends Controller{
….. …..
}
?>
Bu biz yaratgan Controller fayl, ushbu class tarkibida o’zingizga kerakli metodlar va funksiyalarni e’lon qilishingiz mumkin.
Route
Biz bilamizki bizga route kerak va biz ushbu route orqali o’z havolalarimizni e’lon qilishimiz mumkin. C:OSPaneldomainslumen_ret.uzroutesweb.php fayli ichida oldindan bitta standart route yaratilgan va endi biz RESTful API ni ishlatishimiz uchun bir nechta route lar va ularga tegishli metod va funksiyallarni e’lon qilib yaratib olishimiz zarur.
Metod Turi | Url (Havola) | Controler@method | |
---|---|---|---|
GET | http://localhost:8000/api/v1/book | BookController@index | All Books |
GET | http://localhost:8000/api/v1/book{id} | BookController@getbook | Fetch Book By id |
POST | http://localhost:8000/api/v1/book | BookController@createBook | Create a book record |
PUT | http://localhost:8000/api/v1/book{id} | BookController@updateBook | Update Book By id |
DELETE | http://localhost:8000/api/v1/book{id} | BookController@deleteBook | Delete Book By id |
Biz barcha marshrutlarda api/v1 (versiya v1) ilovasini qo’shdik. Veb-servislar yaratish uchun yaxshi amaliy vosita desak bo’ladi.
Xo’sh endi routes ga qaytsak, biz quyidagi route havolalarini elon qilishimiz zarur.
Ha, bu marshrutlarni prefiks va ismlar bo’yicha guruhlashimiz ham mumkin bu esa bizga ancha qulayliklar olib keladi va shuning uchun har bir marshrutda «api /v1» ni qo’shishga yoki «App Http Controllers» yozishga majbur bo’lmaymiz. Routes da guruhlashdan foydalanish ham kodlarni va ham vaqtni sezilarli tejashga yordam beradi..
.
Yuqoridagi ikki variantdan birortasini ishlatishingiz mumkin. Bu sizning istagingizga bog’liq bo’lgan vaziyat hisoblanadi.
Controller
Yuqorida ham aytib o’tganimdek endi asosiy qismga keldik. Biz yaratib olgan Controller BookController.php ni ochib routes da kiritgan maydonlarni ishga tushirishimiz zarur. Buning uchun kerakli ma’lumotlarni ushbu faylga kiritamiz.
Yuqorida biz metodlar, konstruktro va boshqa kerakli maydonlarni e’lon qilib oldik. va deyarli ishni tugatdik.
Testing (Sinab Ko’rish)
Biz yaratgan API hozir tayyor. Endi vaqt ilovani sinab ko’rishga keldi. Sinash uchun CURLdan foydalanishingiz mumkin.
1
2 3 4 5 6 7 |
curl -I http://localhost:8000/api/v1/book
|
Va siz ham buni test qilib ko’rishingiz mumkin. O’rnatish va undan foydalanish juda oson va qulaydir. Ushbu dars orqali men iloji boricha juda sodda bo’lgan API ni yaratishni ko’rsatishga harakat qildim. Ushbu qo’llanmani yaratishda quyidagi manbalardan foydalandim, va siz ham ushbu manzildagi ma’lumotlarni kelajakdagi loyihalaringizda foydalanishingiz mumkin.
https://lumen.laravel.com/docs/5.6
Eslatib o’tish joiz. Ushbu qo’llanmani Laravel va Lumen ning oxirgi versiyalaridan foydalangan holda yaratdim. Eski versiyalar bilan ozma oz farq qilishi mumkin.
Web Dasturlash
Lumen Micro Framework da RESTful API dan foydalanish