با سلام،
در ادامه ی قسمت اول آموزش این جلسه از مرحله 3 پیش خواهیم رفت:
3- Slim PHP Micro Framework
به جای اینکه از اول شروع به نوشتن یه Rest Framework بکنیم، بهتره که از یه فریمورک نوشته شده و آماده استفاده کنیم. که من تو ابن آموزش با توجه به آموزش Rami tavada از فریمورک slim استفاده می کنم و دلایل استفاده کردن از این فریمورک از قرار زیر می باشد:
1- فریمورک بسیار سیکی است، ساده می باشد و. برای مبتدیان فهم فریمورک ساده می باشد.
2- از تمام متود های HTTP پشتیبانی می کند ( GET, POST, PUT and DELETE) که برای داشتن REST API ضروری هستند.
3- از همه مهمتر، معماری لایه میانی دارد که در فیلتر کردن درخواست ها مفید است. در این مورد ما برای verify کردن API key ازش استفاده می کنیم.
دانلود Slim Framework:
از اینجا می توانید دانلود کنید (دانلود نسخه stable)
4- نصب Wamp Server
wamp server به شما اجازه نصب apache, php و mysql رو با یک installer میدهد که دیگه سختی های نصب جداگانه و گانفیگ کردن هر کدومشون به صورت چداگانه وجود نداره، (همچنین می توانید از Xamp یا Lamp نیز استفاده کنید، اگر از Mac استفاده می کنید نیز Mamp) اما Wamp همچنین شامل phpmyadmin می شود که به آسانی ارتباط با پایگاه داده MySql رو برقرار می کند.
Wamp را از اینجا دانلود و نصب کنید(ورژن متناسب با سیستم عامل خودتون رو انتخاب کنید)، پس از نصب برنامه رو از این آدرس اجرا کنید:
Start -> All Programs -> Wamp Server -> Start WampServer
داخل مرورگر این دو لینک رو باز کنید تا از نصب درست Wamp مطمئن بشید:
5- نصب Chrome Advanced REST client extension برای تست گرفتن از php
Chrome Advanced REST client extension راهی ساده برای تست کردن REST API می باشد. این extension تنظیمات زیادی مانند اضافه کردن request headers، Adding request parameters، changing HTTP method زمانی که لینک فراحاونی می شود را دارد.
خب از اینجا نصبش کنید. بعد از نصب میتویند در Chrome apps پیداش کنید یا آیکونش به گوشه بالا سمت راست اضافه می شود.
6- استفاده ازREST API برای اپلیکیشن Task Manager
برای پیاده سازی REST API به مثال از Task Manager App با کمترین قابلیت رو در نظر گرفتم.
1- کاربر میتونه ثبت نام و لاگین انجام بده.
2-عملیات مرتبط با task مانند creating، reading، updating و deleting. تمامی API ها مرتبط با هر task شامل api key در فیلد header شناسایی است.
در ادامه لیستی از فراخوانی های API که در این آموزش می سازیم آورده شده است.توجه کنید که url endpoint مشابه برای چندین فراخوانی API استفاده می شود، اما تفاوت در نوع HTTP Method ای است که برای فراخوانی url استفاده شده است. فرض کنیداگر /tasks با متود POST فراخوانی شود، یه task جدید ساخته خواهد شد. همانطور که از /tasks رو با متود get فراخونی کنیمو تمام task ها در زیر لیست شده اند:
API Url Structure
URL | Method | Parameters | Description |
/register | POST | name, email, password | User registration |
/login | POST | email, password | User login |
/tasks | POST | task | To create new task |
/tasks | GET | Fetching all tasks | |
/tasks/:id | GET | Fetching single task | |
/tasks/:id | PUT | Updating single task | |
/tasks/:id | DELETE | task, status | Deleting single task |
7- ساخت پایگاه داده MySql
سه تا جدول داریم، فیلد های هر جدول در شکل زیر مشخص شده است:
کوئری ساخت جداول پایگاه داده:
CREATE DATABASE task_manager; USE task_manager; CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(250) DEFAULT NULL, `email` varchar(255) NOT NULL, `password_hash` text NOT NULL, `api_key` varchar(32) NOT NULL, `status` int(1) NOT NULL DEFAULT '1', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ); CREATE TABLE IF NOT EXISTS `tasks` ( `id` int(11) NOT NULL AUTO_INCREMENT, `task` text NOT NULL, `status` int(1) NOT NULL DEFAULT '0', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `user_tasks` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `task_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `task_id` (`task_id`) ); ALTER TABLE `user_tasks` ADD FOREIGN KEY ( `user_id` ) REFERENCES `task_manager`.`users` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE ; ALTER TABLE `user_tasks` ADD FOREIGN KEY ( `task_id` ) REFERENCES `task_manager`.`tasks` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE ;
قسمت اول آموزش: لینک
قسمت سوم آموزش:
سلام …
ممنون از مطالب خوبتون…
دستون درد نکنه، خدا قوت …
فقط لطفا میشه بخش سوم رو هم لطف کنین و رو سایت بزارین..
خیلی خیلی ممنون و مچکرم…
سلام، بخش سوم تا پایان خرداد حتمن میزارم بالا، در حال حاضر یکم درگیر پردازش زبان طبیعی شدم و وقت نکردم متاسفانه بخش سوم آموزش رو تکمیل کنم… حتمن تکمیل میشه 🙂
وقت بخیر قسمت سوم رو نمیذارید؟راستی خیلی جامع و کامل توضیح دادید
با سلام و درود، قسمت سوم رو میگذارم ولی شاید یه مقدار طول بکشه زمان گذاشتنش (در حال حاضر به خاطر پروژه ای یه مقدار درگیر Kotlin شدم)