12 KiB
12 KiB
مشخصات درسنامه: رمزگشایی از مستندات API و مدیریت امن کلیدها (Credentials & .env)
- شناسه در سیلابس:
L10.3 - فصل: فصل ۱۰: اتصال سرویسهای بیرونی (Ch 10)
- نوع محتوا: 📘 درسنامه متنی
- زمان تقریبی مطالعه: ۱۵ دقیقه
- پیشنیازهای مستقیم:
L10.2(سرویس Third-Party چیست)
۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
- درک کند (Understand): ساختار استاندارد مستندات فنی API (شامل Base URL، هدرهای احراز هویت، اندپوینتها، متدهای HTTP و نمونههای cURL/JSON) را به راحتی بخواند و درک کند.
- تحلیل/ارزیابی کند (Evaluate): تفاوت متغیرهای محیطی امن سمت سرور با متغیرهای عمومی کلاینتی با پیشوند
NEXT_PUBLIC_را تشخیص داده و خطرات نشت اطلاعات حساس را ارزیابی کند. - بهکار ببندد (Apply): فایلهای
.env.localو.env.exampleرا به شکل استاندارد در پروژه پورتفولیو ایجاد و مقادیر آزمایشی کلیدها را در آن ذخیره نماید. - ایجاد کند (Create): یک پرامپت طلایی برای ایجنت بنویسد که با دریافت نمونه کد cURL یا مستندات وبسرویس، یک ماژول ارتباطی تمیز با تایپهای کامل TypeScript تولید کند.
۲. محدوده و مرزهای محتوا (Scope & Boundaries)
آنچه باید پوشش داده شود (In-Scope):
- شکستن ترس از مستندات انگلیسی و جداول پارامترها:
- مستندات API شبیه دفترچه راهنمای یک تلویزیون جدید است؛ لازم نیست همه صفحات را بخوانید، فقط باید بدانید دکمه روشن و پورت ورودی کجاست!
- کالبدشکافی ۵ بخش اصلی هر سند API:
- ۱. آدرس پایه (Base URL): سرور مرکزی کجاست؟ (مثلاً
https://api.kavenegar.com/v1/). - ۲. شیوه ارسال احراز هویت (Authentication): کلید در هدر
Authorization: Bearer <KEY>است یا داخل پارامترهای آدرس؟ - ۳. مسیرها و متدها (Endpoints & Methods): آیا داده میفرستیم (
POST) یا داده میخوانیم (GET)؟ - ۴. بدنه درخواست (Request Body / Payload): چه فیلدهایی اجباری (Required) و چه فیلدهایی اختیاری (Optional) هستند؟
- ۵. پاسخ سرور و کدهای وضعیت (Response & Status Codes): پاسخ موفق ۲۰۰۰، خطای ۴۰۱ احراز هویت، خطای ۴۲۹ محدودیت درخواست و خطای ۵۰۰ سرور.
- ۱. آدرس پایه (Base URL): سرور مرکزی کجاست؟ (مثلاً
- تکنیک میانبر وایب کدینگ: خوراندن مستندات به ایجنت هوش مصنوعی:
- نحوه کپی کردن دستور cURL از مستندات و تبدیل آن به کدهای تایپاسکریپت تمیز توسط ایجنت با دستور
@docs.
- نحوه کپی کردن دستور cURL از مستندات و تبدیل آن به کدهای تایپاسکریپت تمیز توسط ایجنت با دستور
- قوانین طلایی مدیریت کلیدها و گاوصندوق
.env.local:- قانون شماره ۱: هرگز کلید را هاردکد نکنید (
const apiKey = "123"ممنوع!). - قانون شماره ۲: فایل
.env.localباید در.gitignoreثبت شده باشد تا هیچوقت روی گیتهاب آپلود نشود. - قانون شماره ۳: ساخت فایل نمونه
.env.exampleبدون مقادیر واقعی برای سایر اعضای تیم یا ریپازیتوری عمومی. - قانون شماره ۴: تفاوت حیاتی متغیرهای معمولی (مخفی در سرور) با متغیرهای دارای پیشوند
NEXT_PUBLIC_(آشکار در مرورگر کاربر).
- قانون شماره ۱: هرگز کلید را هاردکد نکنید (
- دستورات چندسکویی برای کپی و مدیریت فایلهای محیطی:
- ساخت
.env.localاز روی.env.exampleبا دستورات ترمینال برای ویندوز، مک و لینوکس.
- ساخت
- کالاوتهای آموزشی و هشدار کوئرا:
- کالاوت بنفش (
<details class="violet">): نحوه کار رباتهای اسکنر گیتهاب که کلیدهای لو رفته را در عرض چند ثانیه سرقت میکنند. - کالاوت سبز (
<details class="green">): ابزارهای تستی سریع مانند Thunder Client یا استفاده از دستور سادهcurlبرای راستیآزمایی کارکرد کلید در ۳۰ ثانیه. - کالاوت قرمز (
<details class="red">): هرگز کلیدهای واقعی و اعتباری خود را داخل چتباتهای عمومی یا تیکتهای پشتیبانی نگذارید.
- کالاوت بنفش (
آنچه نباید وارد آن شویم (Out-of-Scope):
- مباحث پیشرفته هشینگ و امضای دیجیتال توکنهای JWT (فصل ۱۱).
- اتصال اختصاصی وبسرویسهای خاص (در درسهای بعدی فصل ۱۰ به تفکیک بررسی میشوند).
۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|---|---|---|
| API Documentation | مستندات رابط برنامهنویسی | راهنمای رسمی ارائهدهنده سرویس که نحوه ارسال درخواست و قالب پاسخ را شرح میدهد |
| Base URL | آدرس پایه سرور | ریشه اصلی آدرس وبسرویس که تمام مسیرها و درخواستها به انتهای آن متصل میشوند |
| Bearer Token | توکن حامل | فرمت استاندارد ارسال کلید امنیتی در هدر درخواست HTTP برای اثبات هویت مجاز |
| Environment Variable | متغیر محیطی | مقادیر تنظیمی خارج از کد برنامه که در فایلهای محلی تنظیم و متناسب با محیط تغییر میکنند |
| GitLeaks / Secret Leak | نشت اطلاعات محرمانه | حادثه امنیتی خطرناک انتشار ناخواسته رمزها و کلیدهای خصوصی در تاریخچه گیت |
| cURL | ابزار خط فرمان cURL | دستور ترمینالی استاندارد برای شبیهسازی و ارسال درخواستهای شبکه به سرورها |
۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
راهنمای ایجنت نویسنده: تمام تصاویر باید در پوشهٔ
images/ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
- تصویر کاور درس:
images/cover.png- موضوع: گاوصندوق دیجیتال مستحکم نئونی که کلیدهای API را محافظت میکند در کنار یک دفترچه راهنمای مدرن که مسیرهای نوری از آن خارج میشوند.
- کالبدشکافی ساختار سند API مدرن:
images/api-docs-anatomy.png- موضوع: اسکرینشات از صفحه مستندات یک وبسرویس مدرن با فلشهای توضیحی روی Base URL، Header، Request Body و Response JSON.
- تفکیک دو دنیای متغیرهای محیطی در Next.js:
images/env-variables-boundary.png- موضوع: اینفوگرافیک مقایسهای: سمت سرور (دیوار محرمانه، متغیرهای بدون پیشوند) در برابر سمت کلاینت (پیشوند NEXT_PUBLIC_، دید همگانی در سورس صفحه مرورگر).
- تبدیل نمونه cURL به کد تایپاسکریپت با ایجنت:
images/curl-to-typescript-prompt.png- موضوع: پنجره چت ادیتور که دستور cURL مستندات به ایجنت داده شده و ایجنت یک فانکشن تمیز تایپشده تحویل داده است.
۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (README.md)
- تیتر اصلی:
# رمزگشایی از مستندات API و مدیریت امن کلیدها (Credentials & .env) - مقدمه: چگونه مستندات وبسرویسها را در ۵ دقیقه رمزگشایی کنیم و کلیدهای محرمانه را مثل طلا در گاوصندوق نگه داریم؟
- جدول کاور درس
- استعاره منوی رستوران و گارسون:
- مستندات API دقیقاً مثل منوی رستوران است: غذاها چیست (Endpoints)، هزینه چیست (Payload)، و غذا چطور سرو میشود (Response).
- کالبدشکافی ۵ رکن اساسی هر سند API با مثال واقعی:
- آدرس پایه، هدرهای Authorization، متدهای GET/POST، بدنه جیسون و کدهای پاسخ موفق و خطا.
- سریعترین تست با دستور cURL در ترمینال:
- تست یکخطی ساده برای راستیآزمایی پاسخ سرور قبل از شروع کدنویسی.
- روش تبدیل مستندات به ماژول آماده تایپاسکریپت با ایجنت هوش مصنوعی:
- جعبه پرامپت طلایی:
«من این نمونه درخواست cURL را از مستندات وبسرویس دارم: [نمونه cURL]. لطفاً یک تابع Server Action تایپاسکریپت تمیز در Next.js با تایپهای مشخص برای ورودیها و خروجیها بساز که کلید API را از
process.envبخواند و خطاهای شبکه را با پیام خطای خوانا به زبان فارسی مدیریت کند.»
- جعبه پرامپت طلایی:
- مدیریت گاوصندوق
.env.localو جلوگیری از فاجعه نشت کلید:- چرا کلیدها هرگز داخل کدهای گیت وارد نمیشوند؟
- تفاوت حساسیتبرانگیز بین متغیرهای معمولی سروری و متغیرهای
NEXT_PUBLIC_.
- دستورات چندسکویی ساخت فایل تنظیمات محیطی:
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- Windows (PowerShell):
Copy-Item .env.example .env.local - macOS (Terminal):
cp .env.example .env.local - Linux (Bash):
cp .env.example .env.local
- Windows (PowerShell):
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- باکس نکته Quera (
<details class="violet">): ماجرای وحشتناک رباتهای اسکنر گیتهاب؛ نشت یک کلید API در یک مخزن عمومی و مصرف میلیونها تومان اعتبار در کمتر از چند دقیقه! - باکس راهنمای Quera (
<details class="green">): افزونههای ساده مثل Thunder Client در ادیتور برای تست اندپوینتها با یک کلیک. - باکس هشدار Quera (
<details class="red">): چکلیست نهایی فایل.gitignore؛ مطمئن شوید عبارت.env*.localدر خطوط گیتایگنور وجود دارد. - جمعبندی درسنامه: تسلط کامل بر زبان مستندات API و گاوصندوق متغیرهای محیطی؛ ورود به اولین اتصال واقعی: ارسال پیامک با وبسرویسهای کاوهنگار و SMS.ir در درس بعدی.
۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- پنج بخش اصلی مستندات API با مثالهای بصری و ملموس تشریح شوند.
- مرز امنیتی متغیرهای سروری و متغیرهای دارای پیشوند
NEXT_PUBLIC_تبیین گردد. - پرامپت طلایی تبدیل مستندات و نمونه cURL به کدهای تمیز TypeScript ارائه شود.
- دستورات ترمینالی کپی فایل محیطی برای سیستمعاملهای مختلف در تبهای کشویی گنجانده شود.