حتما شما از تلگرام استفاده کردهاید و به احتمال زیاد هم نرمافزار موبایلش را در تلفنهای همراه خود دارید و شاید بعضی اوقات بنا بر نیازتان از نسخه دسکتاپ یا وب آن استفاده کردهاید، شاید برایتان سوال باشد که چطور میشود که من هر چیزی که در تلگرام موبایلم دارم در وب و دسکتاپ نیز دارم و حتی میتوانم همزمان از آنها استفاده کنم، سوال بسیار جالبی است و قرار است که با هم در این مقاله جزئیات آن را بررسی کنیم.
API چیست؟
API برگرفته از 3 کلمهي Application Programming Interface است، به معنای (رابط برنامه نویسی اپلیکیشن) که مانند موتور زیر کاپوت عمل میکند و تمامی کارهایی را که ما انتطار داشته باشیم در پشت صحنه انجام میدهد.
ولی سوالی که خیلیها میپرسند این است که API چیست؟ و احتمالا شما هم این عبارت را در گوگل جستجو کردهاید.
API مثل یک پیامرسان است که درخواستش را به سیستم میدهد و به سیستم میگوید که چه کاری میخواهد انجام بدهد و سیستم به آن پاسخ میدهد.
API در زندگی روزمره
فرض کنید که پدرتان به شما یه لیست خرید داده است و شما میخواهید از فروشگاه مربوطه خرید کنید، میروید و لیستی که پدرتان به شما داده است را به فروشنده میدهید و میخواهید که این لیست را برای شما بیاورد و فروشنده بعد از چند دقیقه اجناس را برای شما آماده میکند و شما هم برمیگردید و آنها را تحویل پدرتان میدهید.
در این مثال پدر شما همان درخواستکننده است و فروشنده همان سیستم است که به درخواست پدرتان پاسخ میدهد، اما API چه کسی است؟
درست حدس زدید API دقیقا خود شما هستید که درخواست را از پدرتان دریافت کردهاید و به فروشنده تحویل دادهاید و از همان فروشنده پاسخ را دریافت کردید و به پدرتان تحویل دادهاید.
API در دنیای برنامه نویسی
حال فکر کنید که میخواهید یک بلیط هواپیما بخرید، اگر به سایتهایی مثل ماهان ایر، ایرانایر و ... بروید شما محدود هستید به اینکه فقط از پروازهای آنها بلیط تهیه کنید اما وقتی شما به سایتهایی مانند علی بابا مراجعه میکنید، این سایتها تمامی پروازها را از مبدا هر جایی به مقصد هر جایی در اختیار دارند پس متوجه میشویم که این سایتها در حال صحبت کردن با سایر سایتها میباشند، در اینجا APIها نقش اساسی در عملکرد آنها دارند.
Rest چیست؟
Rest برگرفته از 3 کلمهی Representational State Transfer که به معنای (انتقال بازنمودی حالت) است، به طور دقیقتر Rest چگونگی ظاهر APIها را تعیین میکند.
4 کار از عهده Rest برمیآید که یکیش را در بالا گفتیم و به ترتیب مابقی را توضیح میدهیم.
Rest تشکیل شده از متدهای HTTP میباشد
وضعیت کدها را به ما نمایش میدهد.
نوع پاسخها را نیز به نمایش میگذارد.
Rest تشکیل شده از متدهای HTTP میباشد
شاید با مفهوم CRUD آشنا باشید، CRUD مختصر شده 4 کلمهی Create - Read - Update - Delete است که این عملیات در پایگاه داده انجام میشود که Create وظیفهی ایجاد را دارد، Read وظیفهی خواندن، Update وظیفهی بروزرسانی و در نهایت Delete وظیفهی حذف کردن را دارد، این موارد را در متدهای HTTP هم داریم که عملیاتی مشابه را انجام میدهند. (اگر به خواندن درباره پروتکل HTTP علاقه دارید مقاله پروتکل HTTP چیست؟ را از دست ندهید)
POST: یک درخواست به سمت سرور ارسال میکند.
GET: تمامی اطلاعاتی که از سمت سرور میآید را دریافت میکند.
PUT: اطلاعاتی که از قبل ارسال شدهاند را بروزرسانی یا جایگذاری میکند.
DELETE: همینطور که از نامش پیداست وظیفه حذف تمامی اطلاعات نمایشی منبع هدف را دارد.
PATCH: متد کمتر شناخته شده از HTTP است اما کار دو متد POST و PUT را انجام میدهد و میتوانید با این متد تغییرات جزئی را ایجاد کنید.
HEAD: این متد تقریبا شبیه به GET میماند ولی یک سری تفاوتها بین این دو است، برای مثال اگر شما از متد GET لیست کاربران را میخواهید این متد لیست را به شما نمایش میدهد اما متد HEAD این لیست را به شما نمایش نمیدهد ولی شاید برایتان سوال پیش بیاید پس برای چه استفاده میشود؟ این متد زمانی به کار میآید که بخواهید بدانید اطلاعاتی که قرار است بیاید به چه بزرگی و چه چیزی است.
OPTION: این متد درخواستهایی که از سمت سرور میآید را بررسی میکند، برای مثال اینکه این سرور چه متدهایی و چه عملکردهایی را پشتیبانی میکند. متد OPTION گزینهی خوبی برای آزمایش کردن Fatal Errorهای API نیز است.
TRACE: برای ارسال درخواست (Request) دریافتی است که مانند یک حلقه ارسال پیام میماند و مکانیزم مناسبی برای اشکالزدایی است.
وضعیت کدها (Code Status) را به ما نمایش میدهد.
به طور کلی Code statusهایی که به سمت ما برمیگردد به 5 دسته تقسیم میشوند.
نوع اول: از 100 تا 199
نوع دوم: از 200 تا 299
نوع سوم: از 300 تا 399
نوع چهارم: از 400 تا 499
نوع پنجم: از 500 تا 599
نوع پاسخها را نیز به نمایش میگذارد.
1XX: پیامهای اطلاعاتی (مثل پیام اطلاعاتی 100)
2XX: پیامهای موفقیتآمیز (مثل پیام موفقیت آمیز 200)
3XX: تغییر مسیرها (مثل پیام 304)
4XX: خطاهایی از سمت کاربر (مثل خطاهای 403)
5XX: خطاهایی از سمت سرور (مثل خطای 500)
پس به خاطر داشته باشید که API یک پیامرسان میباشد و Rest این امکان را به ما میدهد تا از HTTP استفاده کنیم و به این پیامها استایل بدهیم.
منظور از استایلدهی همان تبادل اطلاعات در قالب JSON میباشد. JSON به اختصار رسیده 3 کلمه JavaScript Object Notation است که ساختاری شبیه به این را دارد.
Rest API یا Restful API چیست؟
تعریف در Restful API اینگونه بیان میشود که به APIهایی که از قوانین Rest پیروی میکنند Restful API یا Rest API گفته میشود، یا خیلی سادهتر به تمامی فرایند ارسال و دریافت API از Server و Client که انجام میشود Rest API گفته میشود که هیچ محدودیتی در اجرای آن نیست به این معنا که در تمامی زبانهای برنامهنویسی قابل استفاده است.
Rest API در گیتهاب
با هم یک مثال از آن را در سایت گیتهاب مشاهده میکنیم، برای این کار شما میتوانید آدرس https://api.github.com/users را در مرورگر خود وارد کنید و شاهد ساختار JSON که گیتهاب به ما برگردانده است خواهید بود. برای اینکه مشخصات خود را در ساختار JSON ببینید باید در انتهای آدرس یک / قرار دهید و نام کاربری گیتهاب خود را وارد کنید، بعد از این کار شما جزئیات پروفایل خود را در گیت هاب مشاهده میکنید.
Rest API یا Restful API در PHP
حالا وقت آن رسیده که یک نمونه Restful API با همدیگر در PHP بنویسیم، برای شروع یک سری پیشنیازها داریم که باید آنها را تهیه کنید.
XAMPP
IDE
JSON viewer (افزونهی Google Chrome برای نمایش شکیلتر JSON)
بعد تهیه ابزارهای مورد نیاز باید کدنویسی را شروع کنیم.
قدم اول: پایگاه داده
Phpmyadmin خودتان را باز کنید.
یک پایگاه داده با نام api_db بسازید.
یک Table درون پایگاه داده به نام users بسازید.
در پایگاه داده خود 3 فیلد با نامهای id - name- age بسازید.
درون فیلدها به طور دلخواه داده وارد کنید.
قدم دوم: آمادهسازی فایلها
ساخت فایل config.php برای قرار دادن کدهای اتصال به پایگاه داده
ساخت فایل index.php برای نوشتن کدهای Restful API
کدهایی که پایین قرار دادهایم باید در فایل config.php قرار بگیرد تا بتوانیم به پایگاه داده متصل شویم، در ادامه خط به خط کدها را توضیح خواهیم داد.
<?php
class Connect extends PDO
{
public function __construct()
{
parent::__construct("mysql:host=localhost;dbname=api_db","root","");
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
?>
و در فایل index.php این خط کدها را قرار دهید.
require_once "config.php";
class API
{
function Select(){
$db = new Connect();
$users = array();
$data = $db->prepare("SELECT * FROM users ORDER BY id;");
$data->execute();
while($outPutData = $data->fetch(PDO::FETCH_ASSOC)){
$users[$outPutData['id']] = array(
'id' => $outPutData['id'],
'name' => $outPutData['name'],
'age' => $outPutData['age'],
);
}
return json_encode($users);
}
}
$users = new API();
header("Content-Type: application/json");
echo $users->Select();
حال اگر شما این کدها را اجرا کنید باید شاهد این خروجی باشید.
تمامی توضیحات درباره کدهای بالا در ویدئو پایین قرار دارد، توصیه میکنیم این ویدئو را مشاهده نمائید.
توضیحاتی دربارهی کدهای نوشته شده در فایل config.php
class Connect extends PDO
{
}
با کلمه کلیدی class ما میتوانیم در PHP یک کلاس تعریف کنیم و با آوردن یک نام دلخواه جلوی class میتوان آن کلاس را با آن نام بشناسیم، کلمهی کلیدی extends PDO که بعد از نام class آمده به این معناست که خصوصیات PDO که یک روش شیگرایی برای اتصال به پایگاه داده است را برای ما ارثبری میکند.
public function __construct()
{
}
وقتی ما در تعریف یک تابع درون یک شیء از تابع construct__ استفاده میکنیم زمانی اجرا میشود که ما آن کلاس را فراخوانی کنیم، پس اولین تابعی که در این کلاس به طور پیشفرض اجرا میشود construct__ است.
کلمهی کلیدی parent ویژگی پدر خودش که PDO بود که آن را به ارث بردیم برای ما میآورد، در تابع construct__ مشخصات پایگاه داده خود را وارد میکنیم.
در مقابل =mysql:host نام host خود را میآوریم که در اینجا localhost میباشد و با ; (سمیکالن) جدا میکنیم و در مقابل =dbname نام پایگاه داده خود را وارد میکنیم.
در قسمت بعدی خارج از " (دابل کوتیشن)، یک رشتهي دیگر باز میکنیم و نام کاربری پایگاه داده خود را وارد میکنیم که به طور پیشفرض root است و در رشتهي بعدی رمز پایگاه داده خود را وارد میکنیم که به طور پیش فرض خالی است.
با کلمه this$ ما در اصل داریم به آن تابع اشاره میکنیم و با تابع setAttribute ما میتوانیم یک سری صفت برای آنها ست کنیم که در اینجا ما PDO::ATTR_ERRMODE که کار گزارشدهی خطا و ERRMODE_EXCEPTION هندل کردن خطا را بر عهده دارند.
توضیحاتی درباره کدهای نوشته شده در فایل index.php
Require_once "config.php";
با require_once میتوانیم یک فایل را لود کنیم تا از محتویات آن در کدهایمان استفاده کنیم.
class API
{
function Select(){
}
}
همانطور که مشاهده میکنید ما یک کلاس با نام API ساختهایم که کدهای API خود را درون آن میریزیم و درون آن یک تابع به نام Select ایجاد کردهایم تا بتوانیم کدی که نوشتهایم را بارها و بارها استفاده کنیم.
$db = new Connect();
$users = array();
$data = $db->prepare("SELECT * FROM users ORDER BY id;");
$data->execute();
به بررسی 4 خط کد اول داخل تابع میپردازیم.
در خط اول: یک نمونه از کلاسی که درون فایل config.php ساخته شده بود ایجاد کردهایم و درون متغیر db$ ریختهایم.
در خط دوم: یک آرایه خالی از usersها ساخته که در جلوتر کاربرهای خود را درون آن متغیر قرار میدهیم.
در خط سوم: یک دستور SQL ساده نوشتهایم که تمامی کاربرها را از پایگاه داده میخواند و آنها را بر اساس شناسه id مرتب میکند.
ما در قسمت شرط این حلقه با PDO::FETCH_ASSOC هر بار یک آرایه associative، از هر سطر در tableمان داخل پایگاه داده دریافت میکنیم (آرایه associative یک آرایهای است که کلیدها را ما خودمان در آن با نام دلخواه تعریف میکنیم) و در متغیر outPutData$ قرار میگیرد و ما هر بار مقدار بازگشتی را در یک عضو از آرایه users ذخیره میکنیم و در آخر وقتی که مقدار بازگشتی وجود نداشته باشد شرط false میشود و از حلقه خارج میشود.
return json_encode($users);
و در آخر مقداری که درون آرایه users ذخیره شده است را به یک ساختار JSON تبدیل میکنیم و آن را به عنوان خروجی کار برمیگردانیم.
$users = new API();
header("Content-Type: application/json");
echo $users->Select();
در ادامه کار و در خارج از ساختار کلاس ما یک نمونه از کلاس API در users میسازیم، در خط دوم که header را آوردهایم از اهمیت بالایی بر خوردار است چون مشخص میکند محتوای ما از چه نوعی است. و در نهایت نیز خروجی را چاپ میکنیم و نتیجه زیر را میبینیم. جمع بندی
شاید تا الان نمیدانستیم ولی متوجه شدیم که تلفنهای همراهمان، وب سایتها، نرمافزارهای دسکتاپ و ... به یکدیگر متصل هستند و با یکدیگر صحبت میکنند پس امکانات بسیار زیادی را به ما میدهند، ساختار آنها درست مثل نمونهی سادهای که نوشتهایم است، پس اگر با هر زبان برنامهنویسی و یا فریمورکی کار میکنید فرا گرفتن این بخش میتواند بسیار شما را در کارتان حرفهای کند لازم به ذکر است که شما اگر به دنیای تکنولوژی علاقهمند هستید باید همیشه خودتان را بروز نگه دارید.
۵۸ دیدگاه
علی۱۷ اسفند ۱۴۰۲، ۰۷:۴۷
سلام من یک سرور واقعی در panel دارم و میخوام در پروژه فلاتر خودم استفاده کنم
آیا میشه php را با فلاتر تریکب کرد و از دیتا بیس در داخل آن استفاده کرد ؟
نازنین کریمی مقدم۲۸ اسفند ۱۴۰۲، ۱۹:۵۹
درود
بله شما میتونید در بخش بک اند php یک rest api بسازید و از اون در بخش فلاتر استفاده کنید.
محمد۳۰ آذر ۱۴۰۲، ۱۹:۱۳
سلام خسته نباشید یه سوال داشتم ما میتونیم به جای ajax از api برای گرفتن اطلاعات از دیتابیس بدون لود صفحه استفاده کنیم ؟
نازنین کریمی مقدم۰۲ دی ۱۴۰۲، ۱۶:۵۹
درود
بله امکانپذیر هست.
majid۰۷ آبان ۱۴۰۲، ۱۲:۴۵
سلام وقت بخیر؛
من وب سایتی دارم که سیستم فروش ترب رو روی این وب سایت راه اندازی کردم
پشتیبانی ترب درخواست دسترسی به rest-api و باز کردن یک رنج ای پی شده!
از چه طریقی من باید این دسترسی رو به رباتهای ترب بدم که بتونن خزش کنن؟ و اینکه داخل ووکامرس این ویژگی وجود داره؟ اگر وجود داره چطور باید تنظیماتش رو اعمال کنم؟
ممنون
نازنین کریمی مقدم۰۸ آبان ۱۴۰۲، ۰۶:۲۹
درود
بله مسلما راهی داره چون خیلی از وبسایتهای وردپرسی دارند با ترب همکاری میکنند. اما اینکه دقیقا به چه شکلی هست، باید از تیم ترب بخواید یک راهنما از مواردی که نیاز هست رو بهتون ارائه کنند. مشابه تپسل و کافه بازار و... که چنین راهنمایی رو دارند.
حسینی۲۱ تیر ۱۴۰۲، ۰۸:۰۳
سلام وقت به خیر برای دوره restful که فرمانهای java و از json استفاده میشود اگر این دوره را خریداری کنیم مناسب است؟
با تشکر
نازنین کریمی مقدم۲۳ تیر ۱۴۰۲، ۱۷:۵۴
درود
بستگی داره که بخواید کجا استفاده کنید. مثلا اگر دارید یک سایت یا اپ جاوا رو توسعه میدید مسلما به درد میخوره اما اگر دارید با پایتون کار میکنید بهتره دوره restful مخصوص پایتون رو تهیه کنید.
۰۱ آبان ۱۴۰۱، ۰۹:۲۰
سلام و عرض ادب
آقا دم شما گرم واقعا
فقط دو تا موضوع نیاز هست
1 - چطوری میشه authentication برای دسترسی به api را انجام داد؟
2 - یه مثال در خصوص put - Update - Delete نیز ارائه کنید لطفا
نازنین کریمی مقدم۱۵ آبان ۱۴۰۱، ۰۶:۲۶
درود
برای مورد اول<a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API#:~:text=The%20Web%20Authentication%20API%20is,factor%20authentication%20without%20SMS%20texts." target="_blank" rel="noopener nofollow ugc"> این سرفصل</a> و برای مورد دوم <a href="https://docs.bmc.com/docs/ars2008/examples-of-using-the-rest-api-to-get-update-and-delete-an-entry-from-a-form-929631054.html" target="_blank" rel="noopener nofollow ugc">این آموزش</a> رو مطالعه کنید.
MOHAMMAD NAFISI۳۰ مرداد ۱۴۰۱، ۱۴:۵۷
while($outPutData = $data->fetch(PDO::FETCH_ASSOC)){
$users[$outPutData['id']] = array(
'id' => $outPutData['id'],
'name' => $outPutData['name'],
'age' => $outPutData['age'],
);
}
چرا ما اینجا از فورایچ استفاده نکردیم؟البته احساس میکنم چون میخواستیم جیسون بسازیم
نازنین کریمی مقدم۳۱ مرداد ۱۴۰۱، ۰۴:۱۷
درود
اون راه هم شدنی بود اما اینجا چون میخواستیم چک کنیم که تا زمانی که دیتا میاد آرایه رو پر کنه از while استفاده کردیم.
سیدرضا بازیار۲۱ مرداد ۱۴۰۱، ۱۹:۵۲
ممنون امیر جان. مثل همیشه عالی بود?
۲۳ تیر ۱۴۰۱، ۱۱:۱۸
خیلی مقاله مفید و کاملی بود و برعکس اکثر مقالات خیلی راحت و سادهتر مفهموم منتقل کردین متشکر ازشما وسایت خوبتون
۰۵ فروردین ۱۴۰۱، ۰۶:۲۷
سلام واقعا مقاله عالی بود بالاخره فهمیدم api و rest api چیه حالا یه سوال داشتم،فرض کنید من یه سایت دارم به اسم x و یک سایت دیگه به اسم y
سایت x سایت اصلی منه و همه چی به درستی کار میکنه حالا میخوام تو سایت y تو بخش ورود به سایت . از اطلاعات سایت x استفاده کنم . اینجا باید از api استفاده کنم؟اگه آره چه جوری دقیقا؟اگه نه باید از چه چیزی استفاده کنم
نازنین کریمی مقدم۰۵ فروردین ۱۴۰۱، ۱۶:۲۴
درود
منظورتون از اطلاعات دقیقا چیه؟ مشخصات کاربر یا محتوای سایت x؟
Ayoob Kargar۱۰ خرداد ۱۴۰۰، ۱۴:۲۶
خیلی خوب بود دمت گرم
Ayoob Kargar۱۰ خرداد ۱۴۰۰، ۱۴:۲۱
سلام
یک سوال داشتم
اگر بخواهیم خروجی از نوع آرایه ای از جیسون باشه چکار باید کرد
نازنین کریمی مقدم۱۱ خرداد ۱۴۰۰، ۱۳:۲۰
درود. سوال خیلی خوبی پرسیدید.
کافیه خروجی رو یک آرایه در نظر بگیرید و داده رو با فرمت جیسون توش برگردونید. برای مثال:
<code>
$output = array();
foreach ($query->result() as $row) {
$output[] = $row->id . ' ' . $row->name;
}
echo json_encode($output);
</code>
البته یک نمونه کد حاوی جیسون هم در انتهای مقاله آوردیم که میتونید اون رو هم بررسی کنید.
کیاوش۲۳ اردیبهشت ۱۴۰۰، ۰۶:۰۴
سلام وقتتون بخیر،یک سوالی داشتم،من دیدم یک جاهایی نوشتن آموزش api و یکسری هم نوشتن rest api ،میخواستم بدونم تفاوتی هست در این دو؟
نازنین کریمی مقدم۲۴ اردیبهشت ۱۴۰۰، ۲۲:۳۰
درود
یجورایی جواب سوالتون در مقاله هست. به طور کلی api به مجموعه روشهایی گفته میشه که با استفاده از اونها برنامهها میتونند با هم ارتباط برقرار کنند. حالا در حوزه وب، یکی از پرکاربردترینشون روش rest api هست. پس در واقع rest api یک روش هست که زیرمجموعه ای از مجموعه گسترده api میشه.
مهدی جعفری۱۲ دی ۱۳۹۹، ۱۶:۵۴
خوبه. اما از یه مجموعه ای مثل سون لرن انتظار میره آموزشهای کاملتری رو ارائه بده. این آموزش نقصهای زیادی داشت و نیاز هس کاملتر باشه. هم از نظر مفهوم و هم از نظر مثالها و نمونه ها
zahra۲۶ آذر ۱۳۹۹، ۰۷:۳۲
خوب بود ممنون
امیر۱۸ آذر ۱۳۹۹، ۲۰:۲۴
اگه ممکن هست یک راه ارتباطی مثلا تلگرام و یا اینستاگرام بدید از اونجا با شما در ارتباط باشم در ضن قالب html رو باید در ریشه سایت اپلود کنم یعنی کلا وردپرس رو از اونجا حذف کنم و فقط قالب html رو بزارم و با ریداکت همون صفحه نمایش داده بشه.
نازنین کریمی مقدم۱۹ آذر ۱۳۹۹، ۱۶:۳۲
برای تغییر قالب وردپرس نیاز نیست از ریشه همه چیز رو پاک کنید. روش دومی که گفتید اوکی هست. شما از همون سایتی که بهتون پیشنهاد دادم آموزشها رو ببینید متوجه میشید.
برنامه نویسی دردسرهای خودش رو داره و شما حتما باید خودتون یکبار آموزشها رو ببینید و مراحل رو انجام بدید، اینجوری مشکلتون سریعتر رفع میشه.
متاسفانه به دلایل سیاستهای تیمی امکان ارتباط خارج از سایت رو با هم نداریم، اما در صورت گرفتن خطا در مراحل، میتونید در زیر پستهای مرتبط با وردپرس مون کامنت بگذارید تا با کمک هم مشکلتون رو برطرف کنیم.
موفق باشید :)
امیر۱۷ آذر ۱۳۹۹، ۱۴:۴۱
به نظر شما قالب " https://themeforest.net/item/buka-one-page-portfolio/22281415 " خوب هست چون موضوع سایت من مقالههای اموزش و ویدئوهای اموزش میخوام درست کنم بخواتر همین میخواستم ببینم این قالب برای صفحه اول خوب هست یا نه و شما گفتید از یه قالب تک صفحه ای استفاده کنید من دقیقن نمیدونم چطور باید قالب تک صفحه ای رو به نمایش بزارم اگه میشه یه سایتی بگید که از طرق آموزش قالب تک صفحه ای رو تنظیم کنم و افزونه المنتور رو نصب کردم و دارم ازش استفاده میکنم الان من توی این افزونه مطالب وبلاگ رو میتونم نمایش بزارم یا باید چطور باید این کار بکنم. اگه ممکنه خودتون چند تا قالب تک صفحه ای و قالب شخصی هم معفی کنید که با افزونه المنتور سازگار هست.
نازنین کریمی مقدم۱۸ آذر ۱۳۹۹، ۲۰:۱۲
1. بله قالب بوکا قالب خوبیه و یه بخش وبلاگ در نظر گرفته، بعضی از قالبای تک صفحه ای حتی وبلاگ رو صرفا فقط تو هدر صفحه اصلی میارن و وقتی روش میزنید میره رو تو بخش وبلاگ. حالا اینکه کدوم رو میپسندید سلیقه خودتون هست. قالبی که انتخاب میکنید باید جوری باشه که ضمن اینکه انتظارات صفحه اول موردنظرتون رو برآورده کنه، سایر انتظارات رو هم برآورده کنه.
2. قالب تکصفحه ای هیچ فرقی با بقیه قالبها نداره، فقط یکم کاربر پسندتر هست (چون رو گزینههای منو که کلیک میکنید صفحه جابجا میشه و چیزی دوباره لود نمیشه)
3. پیشنهاد میکنم از سایت همیار وردپرس برای استفاده از قالبهای مختلف کمک بگیرید. این سایت قالبهای وردپرسی رو براساس موضوع و نوع دسته بندی کرده و پیش نمایش هر قالب و طریقه استفاده شو کامل توضیح داده.
4. بله با المنتور هم میتونید روی قالب فعلی تون هم کار کنید. به راحتی یه بخش رو به صفحه اصلی تون اضافه کنید و یه منوی سه قسمتی در اون بخش بندازید. تو هر قسمت هم یه مقاله بندازید. یه دکمه هم بذارید که اگه کاربر روش زد، بره به برگه مقالات. پیشنهاد میکنم چندتا آموزش ویدیویی از اینترنت ببینید، چون توضیحش یکم سخته اما تصویری در کمتر از یه ربع کامل متوجه میشید.
5. من خودم با قالب Divi کار میکنم که البته رایگان نیست. کارهای شخصی سازی قالب مثل همین اضافه کردن بخش و... رو هم با المنتور انجام میدم. اما در کل سعی کنید با قالب و وردپرس دوست باشید و از کار کردن و تست حالتهای مختلف خسته نشید تا وردپرس مهربونتر رفتار کنه :)
امیر۱۶ آذر ۱۳۹۹، ۱۳:۰۸
سلام دوباره منظور من این هست من در دامنه سایتم یعنی amirhm.ir یه سابدامین درست میکنم به نام بخش وبلاگ blog.amirhm.ir حالا میخوام مقالهها و هر مطالبی که هست در این بخش وبلاگ و در دامنه اصلی اینها نشون داده بشه حالا من با چه راهی میتونم این کار رو انجام بدم با افزونه rss انجام دادم به درستی نمایش نداد حالا میخوام بدونم با نوشتن api میشه این کار رو انجام داد یا با بدون اون. برای مثال این سایت pouyeshserver.com رو ببینید در قسمت پایین بخش آخرین اخبار وطالب بخش وبلاگ رو در صفحه اطلی قرار دادن. الان منم میخوام این کار رو بکنم.
نازنین کریمی مقدم۱۷ آذر ۱۳۹۹، ۰۰:۳۸
خیلی ممنون که واضحتر توضیح دادید :)
هم با API میشه انجام داد و هم بدون اون،
در حالت اول اگر با API بخواید انجام بدید باید تمامی مراحل رو صفر تا صد خودتون پیاده سازی کنید: اول از همه سورس صفحه اصلی رو تغییر بدید تا بخش وبلاگ به شکل یه فضای خالی دیده بشه، بعد با API اطلاعات آخرین مقاله تون رو درون این فضای خالی نشون بدید و یه دکمه هم بذارید که اگر کاربر زد، بره به برگه وبلاگ. در این روش کارتون خیلی سخت میشه، علاوه بر اون اگر از قالب خوبی استفاده نکرده باشید و تغییرات رو ریسپانسیو اعمال نکنید ممکنه روی سایر دستگاهها و یسری مرورگرها به مشکل بخوره.
من توصیه میکنم که بدون API انجام بدید. اول از همه توصیه میکنم از همین ابتدای کار قالب تون رو تغییر بدید. قالب شما Astra است و صفحه اولش دارای بخشهای مشخصی هست. تغییر قالب دردسرش خیلی کمتره و ثابت شده که بهترین راهکار هست. میتونید از قالبهای تک صفحه ای کمک بگیرید. (این قالبها لزوما تک صفحه ای نیستند اما در صفحه اول امکان حذف و اضافه بخش جدید رو به کاربر میدهند) دقیقا همون چیزی رو به شما میدهند که به دنبالش هستید.
اگر به هر دلیلی نمیتونید قالب رو تغییر بدید، از افزونه المنتور استفاده کنید. انگار نصبش هم کردید، اما نمیدونم چه مشکلی داشته که نتونسته بهتون کمک کنه؟ امیدوارم قالب تون با المنتور سازگار باشه.
امیر۱۳ آذر ۱۳۹۹، ۱۴:۵۹
سلام خسته نباشید من میخوام بخش وبلاگ رو در سایت راه اندازی کنم برای مثال : پوشه blog رو درست میکنم و وردپرس رو توش راه میندازم و نوشتههای توی اون میزارم و الان میخوام این نوشتهها بخش وبلاگ به ادرس example.ir/blog رو در بخش اصلی سایت یعنی example.ir نمایش بدم باید چی کار کنم که مطالب بخش وبلاگ رو در صفحه اول به نمایش در بیاد منظورم این هست که وقتی یک کاربر در بخش example.ir روی یک پست زد به بخش وبلاگ بره نمونه example.ir/blog/test این امکان وجود داره یا نه.
نازنین کریمی مقدم۱۵ آذر ۱۳۹۹، ۰۱:۲۰
درود.
امکانش که هست اما سوالتون خیلی کلی هست و معلوم نیست روی کدوم بخش به مشکل خوردید. منظورتون همین بحث استفاده از API هست؟
حیدر۲۴ آبان ۱۳۹۹، ۲۰:۱۴
سلام، خدا خیرتان دهد
یک سؤال داشتم
آنچه من دیدم یک کوئری از دیتابیس بود
header("Content-Type: application/json");
و اطلاعات به صورت json استخراج شدند
آیا API این است؟
اگر بخواهیم یک API با همین PHP بنویسیم که بتوانیم از reactjs در فرانت اند استفاده کنیم، راه حل چیست؟
امیر صالحی۲۸ آبان ۱۳۹۹، ۱۹:۳۱
سلام و احترام
بله به این شکل هستش و بهتون پیشنهاد میدم بیشتر مطالعه داشته باشید. شما وب سرویس خودتو مینویسید و با استفاده از جاوااسکریپت میتونید یک درخواست به سمت آدرس API یا همون End-point ارسال میکنید. وقتی که این درخواست رو ارسال کردید داده هارو در قالب json در اختیار دارید و میتونید استفاده کنید.
mehran۲۶ مهر ۱۳۹۹، ۲۰:۳۸
خب الان api رو نوشتیم تو فرانت اند چجوری ازش استفاده کنیم ؟
امیر صالحی۲۸ مهر ۱۳۹۹، ۱۸:۰۰
سلام و احترام
باید یک Request ارسال کنید به Endpoint تا بتونید نتابج json رو دریافت کنید
رضا۲۶ شهریور ۱۳۹۹، ۱۲:۳۲
با سلام و وقت بخیر
آیا میتوان دستورات و کدهای مربوط به API را با زبان جاوااسکریپت و در نرم افزار visual studio زد؟
امیر صالحی۲۶ شهریور ۱۳۹۹، ۱۲:۵۲
سلام و احترام
بله قطعا میتونید با جاوااسکریپتهای api نویسی کرد. در بارهی نرم افزار visual studio باید بهتون بگم که این نرم افزار فقط یک IDE هستش و دخالتی توی نوشتن api نداره، صرفا بهمون کمک میکنه توی محیط مناسب کد نویسی کنیم.
Amin Allahrabi۳۱ مرداد ۱۳۹۹، ۰۷:۵۳
سلام ، من میخواستم اطلاعات یک سایت رو بگیرم و در سایت خودم نشان بدم، از API استفاده کنم بهتر هست یا استفاده از web service ؟ ، با فریم ورک لاراول کار میکنم.
امیر صالحی۰۲ شهریور ۱۳۹۹، ۰۵:۱۴
سلام
اگه وب سایت مقصد شما به شما خدمات api را میدهد میتوانید از api استفاده کنید
حسین سلطانیان۲۸ خرداد ۱۳۹۹، ۱۸:۴۶
ممنون عالی بود واقعا ،خدا خیرت بده امیر جان
امیر صالحی۰۳ تیر ۱۳۹۹، ۱۵:۲۲
سلام حسین جان، خیلی خوشحالم که به کارت اومده
ماندانا مهرپور۰۳ خرداد ۱۳۹۹، ۰۹:۰۷
سلام
عالیییی بود...واقعا ممنون
امیر صالحی۰۵ خرداد ۱۳۹۹، ۰۷:۰۷
سلام
سپاس از شما
omid۰۱ اردیبهشت ۱۳۹۹، ۱۶:۴۲
سلام - از Collation زیر استفاده کردم
utf8mb4_general_ci
امیر صالحی۰۲ اردیبهشت ۱۳۹۹، ۱۵:۲۳
لطفا پروژه کنونی رو توی گیت هاب آپلود کنید تا من بررسی کنم
omid۳۱ فروردین ۱۳۹۹، ۱۱:۲۳
سلام ممنون از آموزشتون
من در هنگام دریافت اطلاعات رو بصورت زیر دریافت میکنم
{
"id": "36",
"name": "\u0627\u0646\u0648\u0627\u0639 \u062f\u0645\u0646\u0648\u0634"
},
بخش name متن فارسی هستش . چجوری میتونم این مشکل رو حل کنم؟
امیر صالحی۰۱ اردیبهشت ۱۳۹۹، ۱۴:۲۳
سلام
ممنون از شما برای وقتی که گذاشتید
برای دیتابیستون collation مناسب تعریف کردید؟
اشکان۱۴ اسفند ۱۳۹۸، ۲۲:۳۲
درود به شما.
تشکر بابت آموزشتون.
اما! یه چیزی رو متوجه نشدم! این همه توضیح راجب HTTP و REST و API تهش چیزی از استفاده از پروتکلهای HTTP نبود!
نه از پروتکلها خبری بود نه از status codeها! به هر حال ممنون.
راستی «کدهای وضعیت یا status codes» درسته نه «وضعیت کد (code status)». :)
امیر صالحی۱۵ اسفند ۱۳۹۸، ۰۶:۳۰
سلام دوست عزیز
بله همون طور تو ویدیو هم گفتیم قرار شد که Rest API ساده بزنیم و اگر Code status را جستجو کنید به نتیجه ای که بالا اشاره شد خواهید رسید.
و در آخر ممنون از وقتی که برای مطالعه این مقاله گذاشتید .
Faraz Salehi۱۴ اسفند ۱۳۹۸، ۰۷:۱۷
خیلی عالی بود ... فقط یه سوال : کاربرد header چی هست ؟ من شخصا بیشتر از تابع header برای رجوع به یه صفحه دیگه میکنم.
امیر صالحی۱۴ اسفند ۱۳۹۸، ۰۹:۳۸
تشکر بابت وقتی که گذاشتید
بله درسته شما از header و پارامتر location استفاده میکنید تا به یک صفحه ی دیگه روجوع کنید ولی تابع header محدود به این کار نیست، همون طور که تو مقاله هم خوندید از header برای مشخص کردن نوع محتوای صفحه مورد نظرمون استفاده کردیم و گفتیم که قراره تو این صفحه JSON بشینه.
امیدوارم باعث رفع ابهام شده باشه.
Abbas۱۳ اسفند ۱۳۹۸، ۱۳:۴۴
سلام خسته نباشید عاااالی بود خدا خیرتون بده
امیر صالحی۱۳ اسفند ۱۳۹۸، ۱۷:۰۳
سلام
شما هم خسته نباشی دوست عزیز
مرسی از اینکه وقت با ارزشتونو برای این مقاله گذاشتید
امیررضا جانانفر۱۳ اسفند ۱۳۹۸، ۱۳:۱۰
واقعا عالی و کابردی بود
کلی لذت بردم از خوندن این پست
امیررضا جانانفر۱۳ اسفند ۱۳۹۸، ۱۳:۰۹
آقا بسیار عالی و کاربردی بود
لذت بردم واقعا
امیر صالحی۱۳ اسفند ۱۳۹۸، ۱۷:۰۱
خیلی خوشحالم از اینکه این مقاله برای شما کاربردی بوده