بعد از این درس دقیقاً چه بلدی؟
- میتوانی «قرارداد پاسخ» را با مثال همین درس توضیح بدهی.
- میدانی «احراز هویت» کجای مسئله به کار میآید.
- تغییر پیشنهادی درس را اجرا میکنی و از روی نتیجه، اشتباه را پیدا میکنی.
قرارداد تحویل میان دو تیم
تیم موبایل نباید با هر پاسخ حدس بزند نام فیلد چیست. API مثل برگه تحویل استاندارد، شکل موفقیت و خطا را از قبل مشخص میکند.
همان منطق پروژه قبلی را بدون HTML در اختیار اپ موبایل میگذاریم. قرارداد پاسخ، کدهای وضعیت و احراز هویت باید ثابت و قابل پیشبینی باشند.
چرا مهم است؟ اپ یک POST بدون عنوان میفرستد. API با وضعیت 422 و یک کد خطای ثابت جواب میدهد تا اپ بتواند پیام مناسب نشان دهد.
اولین تمرین تو: اپ یک POST بدون عنوان میفرستد. API با وضعیت 422 و یک کد خطای ثابت جواب میدهد تا اپ بتواند پیام مناسب نشان دهد.
اول بفهم، بعد کد بنویس
قرارداد پاسخ
ساختار data و error در همه endpointها یکسان میماند.
احراز هویت
توکن از Header خوانده و در سرور اعتبارسنجی میشود؛ شناسه کاربر از بدنه قابل اعتماد نیست.
مستندسازی
روش، نشانی، ورودی، خروجی و خطاهای هر endpoint با نمونه نوشته میشوند.
پاسخ خطای عنوان خالی
اپ یک POST بدون عنوان میفرستد. API با وضعیت 422 و یک کد خطای ثابت جواب میدهد تا اپ بتواند پیام مناسب نشان دهد.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
کد را کامل کن و ساختار آن را بررسی کن
این درس وارد قابلیتهای سروری یا حرفهای شده است. برای امنیت سایت، کد دلخواه روی سرور اجرا نمیشود؛ بررسیگر، وجود اجزای ضروری و منطق مورد انتظار را کنترل میکند و راهنمای اصلاح میدهد.
کد را کامل کن و «بررسی ساختار» را بزن.
این مثال خطبهخط چه میگوید؟
فعلاً حفظ نکن؛ هر خط را به یک جمله ساده تبدیل کن.
- 1
<?phpاز اینجا مفسر PHP شروع به خواندن کد میکند.
- 2
http_response_code(422);این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 3
header("Content-Type: application/json; charset=utf-8");این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 4
echo json_encode([نتیجه این عبارت به خروجی پاسخ فرستاده میشود.
- 5
"error" => [این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 6
"code" => "title_required",این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 7
"message" => "عنوان کار الزامی است",این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 8
],این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
- 9
], JSON_UNESCAPED_UNICODE);این خط بخشی از منطق اصلی مثال است؛ نامها و علامتها را از راست به چپ، بخشبهبخش بخوان.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
نمونه پاسخ موفق 201 را با کلید data بساز. سپس در ابزار API هر دو وضعیت را از نظر Header و JSON بررسی کن.
از ساده به چالشی، بدون پرش
یکی از مقدارهای مثال را عوض کن، خروجی را روی کاغذ حدس بزن و سپس بررسی کن.
نمونه پاسخ موفق 201 را با کلید data بساز. سپس در ابزار API هر دو وضعیت را از نظر Header و JSON بررسی کن.
سناریوی «پاسخ خطای عنوان خالی» را با نامهای واضحتر و یک حالت تازه گسترش بده.
این سه اشتباه را انجام نده
توکن را در Query string میفرستی.
در همه حالتها 200 برمیگردانی.
پیام دیتابیس و Stack trace را داخل JSON خطا میفرستی.
5 پرسش کوتاه؛ مطمئن شو واقعاً یاد گرفتهای
برای هر پرسش یک پاسخ انتخاب کن. بعد از هر انتخاب، دلیل پاسخ را همانجا میبینی.
ورودی درست است اما یکی از قواعد اعتبارسنجی رد شده؛ کدام وضعیت مناسب است؟
کدام توضیح، «قرارداد پاسخ» را دقیقتر بیان میکند؟
بهترین قدم بعد از خواندن مثال این درس چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
درس را فقط وقتی تمام کن که کد را تغییر دادهای
دیدن آموزش کافی نیست؛ یک مقدار را تغییر بده، خروجی را پیشبینی کن و بعد اجرا بزن.