Postman — پلتفرمی برای تست API با رابط گرافیکی است که از پروتکلهای REST، GraphQL، WebSocket و gRPC پشتیبانی میکند. این ابزار امکان ایجاد و ارسال درخواستهای HTTP، سازماندهی آنها در مجموعهها، خودکارسازی تستها از طریق اسکریپتها و تولید مستندات برای اندپوینتها را فراهم میکند. طبق دادههای Postman Learning Center (2026)، بیش از ۲۵ میلیون توسعهدهنده در سراسر جهان از این پلتفرم استفاده میکنند.
مهمترین نکات
Postman پلتفرمی برای توسعه و تست API است که بهصورت برنامه دسکتاپ (Windows, macOS, Linux) و نسخه وب در دسترس است. Postman که در ابتدا در سال ۲۰۱۲ بهعنوان افزونه Chrome ساخته شد، به اکوسیستمی کامل با پشتیبانی از مانیتورینگ، mock-سرورها و تولید کد کلاینتی تبدیل شد.
Postman از تمام متدهای HTTP پشتیبانی میکند: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS. بدنه درخواست میتواند در قالبهای JSON، XML، form-data، x-www-form-urlencoded و binary باشد. پاسخ با برجستهسازی سینتکس، Pretty-print و امکان مشاهده هدرهای خام نمایش داده میشود.
انواع داخلی احراز هویت شامل Bearer Token، Basic Auth، Digest Auth، OAuth 1.0، OAuth 2.0، API Key و AWS Signature است. Postman هدر Authorization را طبق نوع انتخابشده بهصورت خودکار اضافه میکند که تست اندپوینتهای محافظتشده را بدون کپی دستی توکنها سرعت میبخشد.
رابط Postman از پنل کناری (Collections, APIs, Environments)، ناحیه کاری (Request Builder/Response Viewer) و پنل پایینی (Console, Runner) تشکیل شده است. تب Params امکان ویرایش پارامترهای query در URL را بهصورت جدول فراهم میکند و تب Headers برای مدیریت هدرهای HTTP است.
Console (View → Show Postman Console) تمام درخواستها و پاسخهای شبکه را بهترتیب زمانی، از جمله ریدایرکتهای میانی و هدرها را ثبت میکند. این ابزار برای اشکالزدایی جریانهای پیچیده OAuth و زنجیرههای ریدایرکت که Response Viewer استاندارد فقط نتیجه نهایی را نشان میدهد، ضروری است.
Postman از فضاهای کاری تیمی (Workspaces) با نسخهگذاری مجموعهها از طریق Fork و Merge پشتیبانی میکند. اعضای تیم میتوانند روی درخواستها نظر بدهند، تغییرات پیشنهاد دهند و مجموعهها را در زمان واقعی همگام کنند. Public Workspace امکان انتشار مستندات API برای توسعهدهندگان خارجی را فراهم میکند.
درخواست پایه در Postman با انتخاب متد HTTP و وارد کردن URL در نوار آدرس ایجاد میشود. پس از ارسال، پاسخ در پنل پایینی با کد وضعیت، زمان اجرا و اندازه نمایش داده میشود. پارامترهای درخواست هنگام ورود بهصورت خودکار کدگذاری میشوند.
در URL و بدنه درخواست میتوان از متغیرهای پویا بهفرمت {`{`}}$variable${`}`} استفاده کرد. متغیرهای داخلی {`{`}$guid${`}`}، {`{`}$timestamp${`}`} و {`{`}$randomInt${`}`} برای هر درخواست مقادیر یکتا تولید میکنند. اسنیپتهای کد از طریق دکمه Code (>) در دسترس هستند که درخواست معادل را به cURL، Python، JavaScript، Kotlin، Swift و زبانهای دیگر تولید میکند.
// نمونه اسکریپت در Pre-request: تولید امضای HMAC
const timestamp = Date.now().toString();
const secret = pm.environment.get("api_secret");
const hash = CryptoJS.HmacSHA256(timestamp, secret);
pm.request.headers.add({
key: "X-Signature",
value: hash.toString()
});
مجموعهها گروههایی از درخواستهای مرتبط هستند که بر اساس پروژه یا ماژول عملکردی ترکیب میشوند. هر مجموعه میتواند شامل پوشههای تو در تو، هدرهای مشترک و اسکریپتهای Pre-request باشد که قبل از هر درخواست در مجموعه اجرا میشوند. ترتیب درخواستها با کشیدن و رها کردن تعیین میشود.
Postman از پنج سطح متغیر پشتیبانی میکند: global، collection، environment، data و local. اولویت حل تعارض — از محلی به سراسری. فایلهای Environment شامل جفتهای کلید-مقدار برای محیطهای مختلف هستند: development، staging، production. تغییر محیط، همه URLها و توکنها را بهصورت خودکار تغییر میدهد.
| سطح | دامنه دید | اولویت |
|---|---|---|
| Local | درخواست فعلی | ۱ (بالاترین) |
| Data | Collection Runner (از CSV/JSON) | ۲ |
| Environment | محیط فعال | ۳ |
| Collection | کل مجموعه | ۴ |
| Global | کل فضای کاری | ۵ |
Postman امکان نوشتن تستهای JavaScript در تب Tests را فراهم میکند که پس از دریافت پاسخ اجرا میشوند. تستها کد وضعیت، بدنه پاسخ، هدرها و زمان اجرا را بررسی میکنند. نتایج در پنل Test Results با نشانگر رنگی قبولی نمایش داده میشوند.
شی pm روشهایی برای کار با پاسخ فراهم میکند: pm.response، pm.expect، pm.variables. زنجیرهسازی درخواستها از طریق ذخیره دادههای پاسخ یک درخواست در متغیر و استفاده از آن در درخواست بعدی انجام میشود. این اساس ساخت تستهای یکپارچهسازی و بررسی منطق کسبوکار از طریق دنبالهای از فراخوانیهای API است.
// تست: بررسی ساختار پاسخ و ذخیره توکن
pm.test("Status code is 200", () => {
pm.response.to.have.status(200);
});
const json = pm.response.json();
pm.environment.set("auth_token", json.data.token);
Collection Runner همه درخواستهای مجموعه را بهصورت متوالی اجرا میکند و در هر مرحله تستها را انجام میدهد. Newman نسخه کنسولی Postman برای پایپلاینهای CI/CD (Jenkins, GitHub Actions, GitLab CI) است. Newman گزارش را بهفرمتهای JSON، JUnit و HTML برای یکپارچهسازی با سیستمهای مانیتورینگ صادر میکند.
درخواستهای GraphQL در Postman از طریق POST به یک اندپوینت واحد با بدنه JSON ارسال میشوند. تب GraphQL (Beta) ویرایشگر بصری با برجستهسازی سینتکس، تکمیل خودکار فیلدها و اسکیما فراهم میکند. متغیرهای درخواست در پنل جداگانه Variables منتقل میشوند.
Postman از اتصالات WebSocket از طریق رابط جداگانه با پنل پیام پشتیبانی میکند. میتوان پیامهای متنی و باینری ارسال کرد، تاریخچه اتصال را مشاهده کرد و هنگام قطعی بهصورت خودکار دوباره متصل شد. کلاینت Socket.IO در حالت سازگاری با پروتکل Engine.IO کار میکند.
// تست WebSocket در Postman از طریق pm API
const ws = new WebSocket("wss://echo.websocket.org");
ws.onmessage = (event) => {
pm.test("Echo response received", () => {
pm.expect(event.data).to.eql("Hello");
});
};
mock-سرورها امکان شبیهسازی اندپوینتهای API را بر اساس مجموعههای موجود فراهم میکنند. این زمانی مفید است که بکاند هنوز آماده نیست اما فرانتاند یا اپلیکیشن موبایل در حال توسعه است. mock-سرور نمونه پاسخ از مجموعه را با هدرهای صحیح و کد وضعیت برمیگرداند.
mock-سرور از مجموعه با یک کلیک ایجاد میشود: مجموعه را انتخاب کنید → Mock Servers → Add a new mock server. Postman یک URL یکتا تولید میکند که میتوان بهجای API واقعی در کد اپلیکیشن استفاده کرد. برای هر درخواست مجموعه، mock Example Response ذخیرهشده را برمیگرداند که امکان بررسی UI قبل از تکمیل بکاند را فراهم میکند.
Monitors مجموعه را طبق برنامه (هر ۵ دقیقه، ساعت یا روز) اجرا میکنند و در دسترس بودن و صحت API را بررسی میکنند. در صورت شکست تست، مانیتور اعلان به ایمیل یا Slack ارسال میکند. مانیتورینگ از ابر Postman کار میکند، به سرور جداگانه نیاز ندارد و در پلن رایگان تا ۱۰٬۰۰۰ درخواست در ماه را پشتیبانی میکند.
// تست برای مانیتورینگ: بررسی زمان پاسخ
pm.test("Response time < 2000ms", () => {
pm.expect(pm.response.responseTime).to.be.below(2000);
});
pm.test("Content-Type is JSON", () => {
pm.response.to.have.header("Content-Type");
});
Postman مکانیسمهایی برای کار امن با کلیدهای API فراهم میکند. متغیرهای نوع Secret رمزگذاری میشوند و در رابط نمایش داده نمیشوند. برای کار تیمی از Workspace با نقشهای Admin، Editor و Viewer استفاده کنید.
هنگام ایجاد متغیر محیطی نوع Secret را انتخاب کنید — مقدار در همه رابطها با ستاره پنهان میشود. اسرار هنگام اشتراکگذاری به مجموعه صادر نمیشوند و در لاگهای Newman نمایش داده نمیشوند. توصیه میشود رمزها و توکنها را فقط در متغیرهای Secret نگهداری کنید.
Postman از یکپارچهسازی با HashiCorp Vault و AWS Secrets Manager پشتیبانی میکند. اسکریپتهای Pre-request میتوانند اسرار را از ذخیرهگاه خارجی بهصورت پویا درخواست کنند و ذخیره دادههای حساس در فایلهای مجموعه و محیط را حذف کنند.
Postman مکانیسمهایی برای کار امن با کلیدهای API فراهم میکند. متغیرهای نوع Secret رمزگذاری میشوند و در رابط نمایش داده نمیشوند. برای کار تیمی از Workspace با نقشهای Admin، Editor و Viewer استفاده کنید.
هنگام ایجاد متغیر محیطی نوع Secret را انتخاب کنید — مقدار در همه رابطها با ستاره پنهان میشود. اسرار هنگام اشتراکگذاری به مجموعه صادر نمیشوند و در لاگهای Newman نمایش داده نمیشوند. توصیه میشود رمزها و توکنها را فقط در متغیرهای Secret نگهداری کنید.
Postman از یکپارچهسازی با HashiCorp Vault و AWS Secrets Manager پشتیبانی میکند. اسکریپتهای Pre-request میتوانند اسرار را از ذخیرهگاه خارجی بهصورت پویا درخواست کنند و ذخیره دادههای حساس در فایلهای مجموعه و محیط را حذف کنند.
سوالات متداول
Postman اکوسیستم گستردهتری ارائه میدهد: مجموعهها، محیطها، مانیتورینگ، mock-سرورها و Newman برای CI/CD. Insomnia بر سبکی و سرعت با مصرف حافظه کمتر تمرکز دارد. Postman برای کار تیمی بهتر است، Insomnia — برای استفاده فردی.
در Tests درخواست اول توکن را در environment ذخیره کنید: pm.environment.set("token", pm.response.json().token). در درخواست دوم از متغیر {`{`}$token${`}`} در هدر Authorization استفاده کنید. Runner هنگام اجرای متوالی مقدار را بهصورت خودکار جایگزین میکند.
بله، از طریق دکمه Import → Raw Text. Postman دستور cURL را بهصورت خودکار تجزیه میکند و درخواستی با هدرها، متد و بدنه ایجاد میکند. همه فلگهای cURL از جمله -H، -d، -F و -u پشتیبانی میشوند. تبدیل معکوس از طریق دکمه Code (<>) در دسترس است.
از درخواست POST با بدنه JSON استفاده کنید: {"query": "..."}. تب GraphQL ویرایشگر بصری با بارگذاری اسکیما از طریق Introspection Query فراهم میکند. متغیرهای درخواست در فیلد variables همان شی JSON منتقل میشوند.
Newman نسخه کنسولی Postman برای اجرای مجموعهها در CI/CD است. از طریق npm نصب میشود، گزارشهای HTML و یکپارچهسازی با Jenkins، GitHub Actions و GitLab CI را پشتیبانی میکند. امکان خودکارسازی تستهای رگرسیون API بدون رابط گرافیکی را فراهم میکند.
نتیجهگیری
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید