معرفی
پستمن (Postman) ابزاری برای توسعه و آزمون API است. API روشی است که نرمافزارها از طریق آن دادهها یا قابلیتهای خود را در اختیار برنامههای دیگر قرار میدهند. در Postman میتوانید درخواستهای HTTP را ارسال کنید و پاسخ آنها را بدون نیاز به ساخت رابط کاربری بررسی کنید.
برای یک بررسی اولیه، متد درخواست، مانند GET یا POST، و نشانی URL را وارد کنید. سپس در صورت نیاز Headerها، پارامترها یا روش احراز هویت را تنظیم کنید و برای درخواستهای POST یا PUT، بدنهای مانند JSON اضافه کنید. پس از ارسال درخواست، کد وضعیت، Headerها و بدنه پاسخ را بررسی کنید. نتیجه زمانی قابل قبول است که کد وضعیت و ساختار دادههای بازگشتی با قرارداد API و سناریوی مورد انتظار شما مطابقت داشته باشد.
درخواستهایی را که صحت آنها را بررسی کردهاید، در قالب Collection ذخیره کنید و برای محیطهای توسعه یا آزمایشی، متغیرهای Environment مانند base_url و access_token را تعریف کنید. یک Collection مستندسازیشده، همراه با یک Environment نمونه و بدون توکن، گذرواژه یا داده محرمانه، خروجی مناسبی برای نمونهکار شماست و به همتیمیها کمک میکند API را سریعتر آزمایش کنند.
در تیمهای ایرانی، توسعهدهنده بکاند معمولاً endpointهای پیادهسازیشده را پیش از تحویل بررسی میکند. توسعهدهنده فرانتاند یا موبایل میتواند با Collection، رفتار API را پیش از تکمیل رابط کاربری بسنجد. کارشناس QA نیز از آن برای اجرای سناریوهای دستی، بررسی پاسخهای خطا و ثبت نمونه درخواستها و پاسخها استفاده میکند.
پستمن فقط ابزار تست دستی نیست. میتوانید برای هر درخواست، تستهای JavaScript بنویسید و Collection را با Runner یا Postman CLI اجرا کنید؛ این روش برای تکرار سناریوهای API، بررسی پاسخهای مورد انتظار و اجرای آزمونها در فرایند توسعه و تحویل نرمافزار مفید است. با این حال، این قابلیت جایگزین همه تستهای کدنویسیشده، مانند تست واحد یا تست یکپارچهسازی نزدیک به منطق برنامه، نیست. تستهایی که در کد برنامه نوشته میشوند، معمولاً در کنار تغییرات برنامه نگهداری میشوند و برای پوشش منطق داخلی مناسبترند، در حالی که پستمن برای اعتبارسنجی قرارداد و رفتار API مزیت عملی دارد.
اگر قابلیتهای همکاری تیمی، فضای مشترک و مستندسازی آنلاین برای تیم مهم است، پستمن یکی از گزینههای قابل بررسی است. Insomnia و Bruno نیز جایگزینهای این ابزارند. Bruno برای تیمهایی که ترجیح میدهند Collectionها را بهصورت فایل در مخزن کد نگهداری کنند، میتواند مناسبتر باشد؛ Insomnia نیز برای ارسال و سازماندهی درخواستهای API گزینه مناسبی است. پیش از انتخاب، شیوه اشتراکگذاری Collection، هزینه طرح مورد نیاز و نحوه اجرای خودکار در گردش کار تیم را مقایسه کنید.
این ابزار را با نامهای دیگری نیز میشناسند:
- Postman
- Postman API Platform
ویژگیهای کلیدی
موارد زیر تصویری کلی از این بخش برای این ابزار ارائه میکنند.
-
ساخت و ارسال درخواست HTTP
میتوانید متد درخواست، URL، Query Parameterها، Headerها، Cookieها و بدنه درخواست را با قالبهایی مانند JSON، form-data یا x-www-form-urlencoded تنظیم و سپس درخواست را ارسال کنید.
-
بررسی جزئیات پاسخ
پستمن کد وضعیت HTTP، Headerها، بدنه پاسخ، زمان پاسخ و اندازه پاسخ را نمایش میدهد تا بتوان خطاهایی مانند 401، 403، 404 و 500 را سریعتر بررسی کرد.
-
Collection و پوشهبندی درخواستها
درخواستهای یک API را در Collection ذخیره و آنها را بر اساس بخشهایی مانند احراز هویت، کاربران یا سفارشها پوشهبندی میکنید تا درخواستها و آزمونهای تکراری بهراحتی قابل استفاده مجدد باشند.
-
متغیرهای محیطی
متغیرهایی مانند base_url، access_token و شناسه کاربر را یکبار تعریف میکنید و همان درخواست را با انتخاب Environment مناسب، برای محیط توسعه، آزمایشی یا عملیاتی اجرا میکنید.
-
اسکریپتهای پیشدرخواست و آزمون
با اسکریپتهای JavaScript میتوانید پیش از ارسال درخواست، مقدارهای مورد نیاز را تولید کنید یا پس از دریافت پاسخ، کد وضعیت و دادههای مورد انتظار را بررسی کنید.
-
مستندسازی و اشتراکگذاری API
تیمها میتوانند درخواستها، توضیحات و نمونه پاسخها را در یک فضای مشترک نگه دارند تا استفادهکنندگان API نحوه استفاده از endpointها را بهتر درک کنند.
کاربردها
برای آشنایی بهتر با این ابزار، توجه به موارد زیر میتواند مفید باشد.
-
بررسی endpoint تازه توسعهیافته
پس از پیادهسازی یک endpoint، درخواست را با دادههای معتبر و نامعتبر ارسال کنید و کد وضعیت، پیام خطا و ساختار پاسخ JSON را با نتیجه مورد انتظار مقایسه کنید.
-
اشکالزدایی خطای ارتباط فرانتاند با بکاند
اگر رابط کاربری پاسخ مورد انتظار را دریافت نمیکند، همان درخواست را با همان URL، Header Authorization و بدنه درخواست در پستمن ارسال کنید تا مشخص شود مشکل از API، دادههای ارسالی یا کد فرانتاند است.
-
آزمون فرایند احراز هویت
ابتدا درخواست ورود را اجرا کنید، توکن بازگشتی را در متغیر محیطی ذخیره کنید و سپس endpointهای محافظتشده را با همان توکن فراخوانی و بررسی کنید.
-
آمادهسازی نمونه درخواست برای همتیمیها
یک Collection شامل درخواستهای متداول، متغیرهای موردنیاز و نمونه داده بسازید تا توسعهدهنده فرانتاند یا موبایل بتواند API را پیش از تکمیل رابط کاربری آزمایش کند.
-
کنترل دستی تغییرات API
پیش از انتشار نسخه جدید، درخواستهای مهم، مانند ایجاد کاربر، ثبت سفارش یا دریافت فهرست دادهها، را دوباره اجرا کنید تا تغییرهای ناخواسته در پاسخها شناسایی شوند.
پرسشهای رایج درباره پستمن
اگر درباره این ابزار پرسشی دارید، ممکن است پاسخ آن را در میان موارد زیر پیدا کنید.
آیا برای استفاده از پستمن باید برنامهنویسی بلد باشم؟
برای ارسال درخواستهای ساده، خیر؛ اما باید مفاهیم پایه API، متدهای HTTP، JSON، Headerها و کدهای وضعیت را یاد بگیرید. برای نوشتن تستها و اسکریپتهای پستمن، آشنایی مقدماتی با JavaScript مفید است.
پستمن برای توسعهدهنده بکاند چه کاربردی دارد؟
توسعهدهنده بکاند با پستمن endpointهای خود را پیش از اتصال فرانتاند به آنها بررسی میکند، ورودیهای نامعتبر را آزمایش میکند، خطاهای احراز هویت را شناسایی میکند و نمونه درخواستهایی برای اشتراکگذاری با اعضای تیم ایجاد میکند.
فرق Collection و Environment در پستمن چیست؟
Collection مجموعهای از درخواستهای مرتبط است؛ برای مثال، همه درخواستهای API یک فروشگاه. Environment مجموعهای از متغیرها، مانند base_url و access_token، است که با انتخاب آن، همان درخواستها با مقادیر مربوط به آن محیط اجرا میشوند.
آیا پستمن جای تست خودکار API را میگیرد؟
خیر. میتوانید Collection و تستهای JavaScript را با Runner یا Postman CLI بهصورت خودکار اجرا کنید؛ این کار برای تکرار سناریوهای API و بررسی قرارداد API مفید است. اما جایگزین تست واحد و تستهای یکپارچهسازی داخل کد نیست، زیرا آن تستها برای بررسی منطق داخلی و تعامل اجزای برنامه مناسبترند.
آیا باید توکن واقعی محیط عملیاتی را در Collection ذخیره کنم؟
خیر. توکنها، گذرواژهها و کلیدهای محرمانه را در محیط محلی یا سازوکارهای امن مدیریت اطلاعات تیم نگه دارید و پیش از اشتراکگذاری Collection، مطمئن شوید اطلاعات حساس در درخواستها، نمونهها یا متغیرها قرار نگرفته است.